From b7f3db2194dc45a5d35d2bfa7e617321b8ba202c Mon Sep 17 00:00:00 2001
From: yokowu <18836617@qq.com>
Date: Thu, 4 Sep 2025 16:24:04 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BF=9B=E4=B8=80=E6=AD=A5=E5=BC=80?=
=?UTF-8?q?=E6=94=BE=E5=BC=80=E6=BA=90=E7=89=88=E5=8A=9F=E8=83=BD=20-=20?=
=?UTF-8?q?=E5=BC=80=E6=BA=90=E7=89=88=E6=94=AF=E6=8C=81=E6=9F=A5=E8=AF=A2?=
=?UTF-8?q?7=E5=A4=A9=E5=86=85=E7=9A=84=E7=BB=9F=E8=AE=A1=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=20-=20=E5=BC=80=E6=BA=90=E7=89=88=E6=94=AF=E6=8C=81?=
=?UTF-8?q?=E5=AE=89=E5=85=A8=E6=89=AB=E6=8F=8F=E5=8A=9F=E8=83=BD=20-=20?=
=?UTF-8?q?=E4=BC=98=E5=8C=96=E7=89=88=E6=9C=AC=E4=BF=A1=E6=81=AF=E9=A1=B5?=
=?UTF-8?q?=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
backend/errcode/errcode.go | 3 +
backend/errcode/locale.en.toml | 9 ++
backend/errcode/locale.zh.toml | 9 ++
backend/internal/model/repo/model.go | 3 +
backend/internal/model/usecase/model.go | 22 +++--
backend/internal/user/handler/v1/user.go | 17 ----
backend/pro | 2 +-
ui/src/assets/json/takeoff.json | 1 +
ui/src/components/sidebar/aboutModal.tsx | 92 ++++++++++++++++-----
ui/src/pages/dashboard/index.tsx | 5 +-
ui/src/pages/memberManage/groupList.tsx | 8 +-
ui/src/pages/model/components/modelCard.tsx | 4 +-
12 files changed, 126 insertions(+), 49 deletions(-)
create mode 100644 ui/src/assets/json/takeoff.json
diff --git a/backend/errcode/errcode.go b/backend/errcode/errcode.go
index ab3b70fb..c8f51d59 100644
--- a/backend/errcode/errcode.go
+++ b/backend/errcode/errcode.go
@@ -23,7 +23,10 @@ var (
ErrDingtalkNotEnabled = web.NewBadRequestErr("err-dingtalk-not-enabled")
ErrCustomNotEnabled = web.NewBadRequestErr("err-custom-not-enabled")
ErrUserLimit = web.NewBadRequestErr("err-user-limit")
+ ErrModelLimit = web.NewBadRequestErr("err-model-limit")
+ ErrSecurityLimit = web.NewBadRequestErr("err-security-limit")
ErrOnlyAdmin = web.NewBadRequestErr("err-only-admin")
+ ErrOnlyEnterprise = web.NewBadRequestErr("err-only-enterprise")
ErrInvalidSecret = web.NewBadRequestErr("err-invalid-secret")
ErrAIEmployeeLimit = web.NewBadRequestErr("err-ai-employee-limit")
)
diff --git a/backend/errcode/locale.en.toml b/backend/errcode/locale.en.toml
index 414bba1f..20664171 100644
--- a/backend/errcode/locale.en.toml
+++ b/backend/errcode/locale.en.toml
@@ -40,6 +40,15 @@ other = "OAuth is not enabled"
[err-user-limit]
other = "User limit reached"
+[err-model-limit]
+other = "Model limit reached"
+
+[err-security-limit]
+other = "Security limit reached"
+
+[err-only-enterprise]
+other = "Only enterprise user can perform this operation"
+
[err-invalid-secret]
other = "Invalid secret"
diff --git a/backend/errcode/locale.zh.toml b/backend/errcode/locale.zh.toml
index fb3f3a04..da5893e4 100644
--- a/backend/errcode/locale.zh.toml
+++ b/backend/errcode/locale.zh.toml
@@ -40,6 +40,15 @@ other = "OAuth未启用"
[err-user-limit]
other = "用户数量已达上限"
+[err-model-limit]
+other = "模型数量已达上限"
+
+[err-security-limit]
+other = "已有扫描中的任务"
+
+[err-only-enterprise]
+other = "仅企业版可用"
+
[err-invalid-secret]
other = "无效的密钥"
diff --git a/backend/internal/model/repo/model.go b/backend/internal/model/repo/model.go
index 9e18841e..9e81f53f 100644
--- a/backend/internal/model/repo/model.go
+++ b/backend/internal/model/repo/model.go
@@ -62,6 +62,9 @@ func (r *ModelRepo) Create(ctx context.Context, m *domain.CreateModelReq) (*db.M
return nil, err
}
status := consts.ModelStatusActive
+ if m.ModelType == consts.ModelTypeCoder {
+ status = consts.ModelStatusInactive
+ }
if n == 0 {
status = consts.ModelStatusDefault
}
diff --git a/backend/internal/model/usecase/model.go b/backend/internal/model/usecase/model.go
index a7d5dd9a..e72f10b3 100644
--- a/backend/internal/model/usecase/model.go
+++ b/backend/internal/model/usecase/model.go
@@ -109,12 +109,22 @@ func (m *ModelUsecase) Update(ctx context.Context, req *domain.UpdateModelReq) (
}
if req.Status != nil {
if *req.Status == consts.ModelStatusDefault {
- if err := tx.Model.Update().
- Where(model.Status(consts.ModelStatusDefault)).
- Where(model.ModelType(old.ModelType)).
- SetStatus(consts.ModelStatusActive).
- Exec(ctx); err != nil {
- return err
+ if old.ModelType == consts.ModelTypeCoder {
+ if err := tx.Model.Update().
+ Where(model.StatusIn(consts.ModelStatusDefault, consts.ModelStatusActive)).
+ Where(model.ModelType(old.ModelType)).
+ SetStatus(consts.ModelStatusInactive).
+ Exec(ctx); err != nil {
+ return err
+ }
+ } else {
+ if err := tx.Model.Update().
+ Where(model.Status(consts.ModelStatusDefault)).
+ Where(model.ModelType(old.ModelType)).
+ SetStatus(consts.ModelStatusActive).
+ Exec(ctx); err != nil {
+ return err
+ }
}
}
if *req.Status == consts.ModelStatusActive {
diff --git a/backend/internal/user/handler/v1/user.go b/backend/internal/user/handler/v1/user.go
index f80310eb..2b356363 100644
--- a/backend/internal/user/handler/v1/user.go
+++ b/backend/internal/user/handler/v1/user.go
@@ -442,23 +442,6 @@ func (h *UserHandler) LoginHistory(c *web.Context) error {
// @Router /api/v1/user/invite [get]
func (h *UserHandler) Invite(c *web.Context) error {
admin := middleware.GetAdmin(c)
-
- edition := c.Get("edition")
- if edition == nil {
- return errcode.ErrPermission
- }
-
- // 如果是 Free 版本 user 表不允许超过 100 人
- if edition.(int) == 0 {
- count, err := h.usecase.GetUserCount(c.Request().Context())
- if err != nil {
- return err
- }
- if count >= 100 {
- return errcode.ErrUserLimit
- }
- }
-
resp, err := h.usecase.Invite(c.Request().Context(), admin.ID.String())
if err != nil {
return err
diff --git a/backend/pro b/backend/pro
index c7e10eeb..4792df39 160000
--- a/backend/pro
+++ b/backend/pro
@@ -1 +1 @@
-Subproject commit c7e10eeb36598c0cc5914ebd9221b249d24d7009
+Subproject commit 4792df3944e9373811377d7d570c0d8a5db72f7a
diff --git a/ui/src/assets/json/takeoff.json b/ui/src/assets/json/takeoff.json
new file mode 100644
index 00000000..b4249f22
--- /dev/null
+++ b/ui/src/assets/json/takeoff.json
@@ -0,0 +1 @@
+{"v":"5.12.1","fr":60,"ip":0,"op":120,"w":500,"h":500,"nm":"system-solid-137-land-takeoff","ddd":0,"assets":[{"id":"comp_1","nm":"hover-takeoff","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.046,395.833,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[11.458,0],[0,0],[0,-11.458],[-11.458,0],[0,0],[0,11.458]],"o":[[0,0],[-11.458,0],[0,11.458],[0,0],[11.458,0],[0,-11.458]],"v":[[187.5,-20.833],[-187.5,-20.833],[-208.333,0],[-187.5,20.833],[187.5,20.833],[208.333,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.196,0.282,0.949,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('system-solid-137-land-takeoff').layer('control').effect('primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":".primary","mn":"ADBE Vector Graphic - Fill","hd":false,"cl":"primary"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1,"st":-120,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-0.001,"ix":10},"p":{"a":0,"k":[252.869,215.252,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-22.916,-13.334],[-17.083,0],[-8.541,2.291],[0,0],[0,15.625],[0.833,3.126],[14.584,6.041],[20.833,-5.416],[0,0],[0,0],[5.624,-1.458],[0,0],[1.876,-4.375],[-2.5,-4.167],[0,0],[0,0],[0,0],[5.625,-1.041],[0,0],[-1.25,-8.334],[0,0]],"o":[[15.208,8.75],[8.751,0],[0,0],[15.834,-4.167],[0,-3.126],[-5.417,-20.416],[-12.5,-5.417],[0,0],[0,0],[-3.958,-4.167],[0,0],[-4.791,1.25],[-1.874,4.583],[0,0],[0,0],[0,0],[-3.751,-4.374],[0,0],[-8.334,1.667],[0,0],[6.874,25.625]],"v":[[-152.616,118.698],[-103.449,131.821],[-77.616,128.489],[179.051,59.739],[205.301,25.572],[204.051,16.197],[174.259,-23.386],[125.717,-23.179],[85.509,-12.345],[-21.99,-126.928],[-37.407,-131.302],[-104.699,-113.386],[-115.116,-104.219],[-114.282,-90.47],[-47.408,24.948],[-101.782,39.947],[-137.615,-0.678],[-152.616,-5.678],[-192.824,2.863],[-205.116,20.781],[-198.865,58.489]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.196,0.282,0.949,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('system-solid-137-land-takeoff').layer('control').effect('primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":".primary","mn":"ADBE Vector Graphic - Fill","hd":false,"cl":"primary"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":1,"st":-1,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.046,395.833,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[11.458,0],[0,0],[0,-11.458],[-11.458,0],[0,0],[0,11.458]],"o":[[0,0],[-11.458,0],[0,11.458],[0,0],[11.458,0],[0,-11.458]],"v":[[187.5,-20.833],[-187.5,-20.833],[-208.333,0],[-187.5,20.833],[187.5,20.833],[208.333,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.196,0.282,0.949,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('system-solid-137-land-takeoff').layer('control').effect('primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":".primary","mn":"ADBE Vector Graphic - Fill","hd":false,"cl":"primary"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":120,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".primary.design","cl":"primary design","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-0.001,"ix":10},"p":{"a":0,"k":[252.869,215.252,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-22.916,-13.334],[-17.083,0],[-8.541,2.291],[0,0],[0,15.625],[0.833,3.126],[14.584,6.041],[20.833,-5.416],[0,0],[0,0],[5.624,-1.458],[0,0],[1.876,-4.375],[-2.5,-4.167],[0,0],[0,0],[0,0],[5.625,-1.041],[0,0],[-1.25,-8.334],[0,0]],"o":[[15.208,8.75],[8.751,0],[0,0],[15.834,-4.167],[0,-3.126],[-5.417,-20.416],[-12.5,-5.417],[0,0],[0,0],[-3.958,-4.167],[0,0],[-4.791,1.25],[-1.874,4.583],[0,0],[0,0],[0,0],[-3.751,-4.374],[0,0],[-8.334,1.667],[0,0],[6.874,25.625]],"v":[[-152.616,118.698],[-103.449,131.821],[-77.616,128.489],[179.051,59.739],[205.301,25.572],[204.051,16.197],[174.259,-23.386],[125.717,-23.179],[85.509,-12.345],[-21.99,-126.928],[-37.407,-131.302],[-104.699,-113.386],[-115.116,-104.219],[-114.282,-90.47],[-47.408,24.948],[-101.782,39.947],[-137.615,-0.678],[-152.616,-5.678],[-192.824,2.863],[-205.116,20.781],[-198.865,58.489]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.196,0.282,0.949,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('system-solid-137-land-takeoff').layer('control').effect('primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":".primary","mn":"ADBE Vector Graphic - Fill","hd":false,"cl":"primary"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.35],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":40.834,"s":[15]},{"t":120,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.35,"y":0.866},"o":{"x":0.167,"y":0.167},"t":20,"s":[-210.997,290.002,0],"to":[70.167,-0.333,0],"ti":[-77.12,0.617,0]},{"i":{"x":0.424,"y":1},"o":{"x":0.058,"y":0.143},"t":56.666,"s":[210.003,288.002,0],"to":[20.833,-0.167,0],"ti":[-0.417,15.583,0]},{"t":120,"s":[250.003,250.002,0]}],"ix":2,"l":2},"a":{"a":0,"k":[250.003,250.002,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-15.657,-9.04],[-17.461,4.678],[0,0],[0.613,2.286],[23.522,-6.304],[0,0],[3.905,4.691],[0,0],[0,0],[0,0],[1.861,-4.5],[4.702,-1.26],[0,0],[3.632,5.88],[0,0]],"o":[[0,0],[4.679,17.463],[15.657,9.04],[0,0],[2.286,-0.612],[-6.304,-23.529],[0,0],[-5.897,1.58],[0,0],[0,0],[0,0],[2.439,4.214],[-1.86,4.499],[0,0],[-6.681,1.789],[0,0],[0,0]],"v":[[-173.541,20.848],[-165.611,50.44],[-134.076,91.538],[-82.717,98.3],[173.874,29.547],[176.908,24.291],[122.807,-6.945],[65.02,8.538],[48.941,3.434],[-35.986,-98.59],[-74.006,-88.402],[-16.982,10.096],[-16.064,23.918],[-26.475,33.054],[-98.707,52.409],[-116.073,45.516],[-137.304,11.139]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[8.597,0],[15.253,8.806],[6.843,25.539],[0,0],[-2.075,3.594],[-4.009,1.074],[0,0],[-3.633,-5.881],[0,0],[0,0],[0,0],[-1.86,4.5],[-4.702,1.26],[0,0],[-3.905,-4.692],[0,0],[0,0],[-10.772,-40.198],[0,0],[18.956,-5.08],[0,0]],"o":[[-17.152,0],[-22.897,-13.22],[0,0],[-1.075,-4.009],[2.076,-3.595],[0,0],[6.675,-1.788],[0,0],[0,0],[0,0],[-2.439,-4.214],[1.86,-4.499],[0,0],[5.895,-1.581],[0,0],[0,0],[40.199,-10.769],[0,0],[5.079,18.957],[0,0],[-8.526,2.285]],"v":[[-100.396,131.949],[-149.727,118.645],[-195.846,58.541],[-207.825,13.833],[-206.263,1.957],[-196.76,-5.335],[-134.158,-22.109],[-116.792,-15.215],[-95.562,19.162],[-54.301,8.106],[-111.325,-90.392],[-112.243,-104.214],[-101.832,-113.35],[-34.415,-131.415],[-18.336,-126.31],[66.592,-24.287],[114.705,-37.179],[207.143,16.189],[207.143,16.189],[181.976,59.78],[-74.615,128.534]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.196,0.282,0.949,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('system-solid-137-land-takeoff').layer('control').effect('primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":".primary","mn":"ADBE Vector Graphic - Fill","hd":false,"cl":"primary"},{"ty":"tr","p":{"a":0,"k":[250.003,215.258],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":330,"st":30,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250.004,250.003,0],"ix":2,"l":2},"a":{"a":0,"k":[250.004,250.003,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-187.709,-5.25],[187.709,-5.25]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.196,0.282,0.949,1],"ix":3,"x":"var $bm_rt;\n$bm_rt = comp('system-solid-137-land-takeoff').layer('control').effect('primary')('Color');"},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":41,"ix":5},"lc":2,"lj":2,"bm":0,"d":[{"n":"d","nm":"dash","v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":1,"s":[383]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":9,"s":[155]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[155]},{"t":120,"s":[383]}],"ix":1}},{"n":"g","nm":"gap","v":{"a":0,"k":77,"ix":2}},{"n":"o","nm":"offset","v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":9,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[1699.813]},{"t":120,"s":[5060]}],"ix":7}}],"nm":".primary","mn":"ADBE Vector Graphic - Stroke","hd":false,"cl":"primary"},{"ty":"tr","p":{"a":0,"k":[250.004,401.045],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":120,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":".primary.design","cl":"primary design","parent":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0.029,"ix":10},"p":{"a":0,"k":[252.06,215.421,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-22.916,-13.334],[-17.083,0],[-8.541,2.291],[0,0],[0,15.625],[0.833,3.126],[14.584,6.041],[20.833,-5.416],[0,0],[0,0],[5.624,-1.458],[0,0],[1.876,-4.375],[-2.5,-4.167],[0,0],[0,0],[0,0],[5.625,-1.041],[0,0],[-1.25,-8.334],[0,0]],"o":[[15.208,8.75],[8.751,0],[0,0],[15.834,-4.167],[0,-3.126],[-5.417,-20.416],[-12.5,-5.417],[0,0],[0,0],[-3.958,-4.167],[0,0],[-4.791,1.25],[-1.874,4.583],[0,0],[0,0],[0,0],[-3.751,-4.374],[0,0],[-8.334,1.667],[0,0],[6.874,25.625]],"v":[[-152.616,118.698],[-103.449,131.821],[-77.616,128.489],[179.051,59.739],[205.301,25.572],[204.051,16.197],[174.259,-23.386],[125.717,-23.179],[85.509,-12.345],[-21.99,-126.928],[-37.407,-131.302],[-104.699,-113.386],[-115.116,-104.219],[-114.282,-90.47],[-47.408,24.948],[-101.782,39.947],[-137.615,-0.678],[-152.616,-5.678],[-192.824,2.863],[-205.116,20.781],[-198.865,58.489]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.196,0.282,0.949,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('system-solid-137-land-takeoff').layer('control').effect('primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":".primary","mn":"ADBE Vector Graphic - Fill","hd":false,"cl":"primary"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":300,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"t":40,"s":[-20]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":0,"s":[250.003,250.002,0],"to":[202.333,-40.833,0],"ti":[-152.333,92.833,0]},{"t":40,"s":[782.003,81.002,0]}],"ix":2,"l":2},"a":{"a":0,"k":[250.003,250.002,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-15.657,-9.04],[-17.461,4.678],[0,0],[0.613,2.286],[23.522,-6.304],[0,0],[3.905,4.691],[0,0],[0,0],[0,0],[1.861,-4.5],[4.702,-1.26],[0,0],[3.632,5.88],[0,0]],"o":[[0,0],[4.679,17.463],[15.657,9.04],[0,0],[2.286,-0.612],[-6.304,-23.529],[0,0],[-5.897,1.58],[0,0],[0,0],[0,0],[2.439,4.214],[-1.86,4.499],[0,0],[-6.681,1.789],[0,0],[0,0]],"v":[[-173.541,20.848],[-165.611,50.44],[-134.076,91.538],[-82.717,98.3],[173.874,29.547],[176.908,24.291],[122.807,-6.945],[65.02,8.538],[48.941,3.434],[-35.986,-98.59],[-74.006,-88.402],[-16.982,10.096],[-16.064,23.918],[-26.475,33.054],[-98.707,52.409],[-116.073,45.516],[-137.304,11.139]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[8.597,0],[15.253,8.806],[6.843,25.539],[0,0],[-2.075,3.594],[-4.009,1.074],[0,0],[-3.633,-5.881],[0,0],[0,0],[0,0],[-1.86,4.5],[-4.702,1.26],[0,0],[-3.905,-4.692],[0,0],[0,0],[-10.772,-40.198],[0,0],[18.956,-5.08],[0,0]],"o":[[-17.152,0],[-22.897,-13.22],[0,0],[-1.075,-4.009],[2.076,-3.595],[0,0],[6.675,-1.788],[0,0],[0,0],[0,0],[-2.439,-4.214],[1.86,-4.499],[0,0],[5.895,-1.581],[0,0],[0,0],[40.199,-10.769],[0,0],[5.079,18.957],[0,0],[-8.526,2.285]],"v":[[-100.396,131.949],[-149.727,118.645],[-195.846,58.541],[-207.825,13.833],[-206.263,1.957],[-196.76,-5.335],[-134.158,-22.109],[-116.792,-15.215],[-95.562,19.162],[-54.301,8.106],[-111.325,-90.392],[-112.243,-104.214],[-101.832,-113.35],[-34.415,-131.415],[-18.336,-126.31],[66.592,-24.287],[114.705,-37.179],[207.143,16.189],[207.143,16.189],[181.976,59.78],[-74.615,128.534]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.196,0.282,0.949,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('system-solid-137-land-takeoff').layer('control').effect('primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":".primary","mn":"ADBE Vector Graphic - Fill","hd":false,"cl":"primary"},{"ty":"tr","p":{"a":0,"k":[250.003,215.258],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":1,"op":120,"st":0,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"control","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"primary","np":3,"mn":"ADBE Color Control","ix":1,"en":1,"ef":[{"ty":2,"nm":"Color","mn":"ADBE Color Control-0001","ix":1,"v":{"a":0,"k":[0.196,0.282,0.949],"ix":1}}]}],"ip":0,"op":251,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"hover-takeoff","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2,"l":2},"a":{"a":0,"k":[250,250,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":500,"h":500,"ip":0,"op":130,"st":0,"bm":0}],"markers":[{"tm":0,"cm":"default:hover-takeoff","dr":120}],"props":{}}
\ No newline at end of file
diff --git a/ui/src/components/sidebar/aboutModal.tsx b/ui/src/components/sidebar/aboutModal.tsx
index 275dac02..be3b1465 100644
--- a/ui/src/components/sidebar/aboutModal.tsx
+++ b/ui/src/components/sidebar/aboutModal.tsx
@@ -1,9 +1,13 @@
import dayjs from 'dayjs';
import { useState } from 'react';
-import { Ellipsis, Modal } from '@c-x/ui';
-import { Box, Button, Link, Stack } from '@mui/material';
+import { Modal } from '@c-x/ui';
+import HelpCenter from '@/assets/json/help-center.json';
+import Takeoff from '@/assets/json/takeoff.json';
+import IconUpgrade from '@/assets/json/upgrade.json';
+import { Box, Button, Stack } from '@mui/material';
import { DomainLicenseResp } from '@/api/types';
import ChangeLicense from './changeLicense';
+import LottieIcon from '../lottieIcon';
interface LicenseModalProps {
open: boolean;
@@ -36,7 +40,7 @@ const AboutModal = ({
}
return (
-
-
+
当前版本
@@ -53,25 +57,75 @@ const AboutModal = ({
width: '120px',
fontWeight: 700
}}>{curVersion}
+
+ {latestVersion === `v${curVersion}` ? (
+
+ 已是最新版本,无需更新
+
+ ) : (
+
+ )}
-
+
+
产品型号
- {editionText(license?.edition)}
- {editionText(license?.edition)}
+
+
+
+
- {license && license?.edition !== 0 &&
+ {license && license?.edition !== 0 &&
授权时间
@@ -79,9 +133,9 @@ const AboutModal = ({
}}>{dayjs.unix(license.started_at!).format('YYYY-MM-DD')} ~ {dayjs.unix(license.expired_at!).format('YYYY-MM-DD')}
}
- {setOpenChangeLicense(false)}} />
+ onClose={() => { setOpenChangeLicense(false) }} />
);
};
diff --git a/ui/src/pages/dashboard/index.tsx b/ui/src/pages/dashboard/index.tsx
index fa69d1bc..5dfcc85c 100644
--- a/ui/src/pages/dashboard/index.tsx
+++ b/ui/src/pages/dashboard/index.tsx
@@ -61,7 +61,6 @@ const presets = {
end: new Date(),
},
};
-export type TimeRange = '90d' | '24h';
const Dashboard = () => {
const navigate = useNavigate();
@@ -69,7 +68,7 @@ const Dashboard = () => {
const [tabValue, setTabValue] = useState(tab || 'global');
const [memberData, setMemberData] = useState(null);
const [timeRange, setTimeRange] = useState(
- presets['last-1-days']
+ presets['last-7-days']
);
const license = useRequest(() => {
@@ -167,7 +166,7 @@ const Dashboard = () => {
disabled={license?.edition !== 2}
onChange={handleTimeRangeChange}
presets={presets}
- presetIndex={0}
+ presetIndex={2}
value={timeRange}
/>
diff --git a/ui/src/pages/memberManage/groupList.tsx b/ui/src/pages/memberManage/groupList.tsx
index b24913bc..46b6285f 100644
--- a/ui/src/pages/memberManage/groupList.tsx
+++ b/ui/src/pages/memberManage/groupList.tsx
@@ -19,8 +19,8 @@ import {
} from '@mui/material';
import { Table, Modal, message } from '@c-x/ui';
import { ColumnsType } from '@c-x/ui/dist/Table';
-import { DomainAdminUser, DomainUser, DomainUserGroup } from '@/api/types';
-import { deleteDeleteGroup, getListAdminUser, getListUserGroup } from '@/api';
+import { DomainAdminUser, DomainLicenseEdition, DomainUser, DomainUserGroup } from '@/api/types';
+import { deleteDeleteGroup, getListAdminUser, getListUserGroup, v1LicenseList } from '@/api';
import { deleteRemoveAdminFromGroup, postGrantGroup, postAddUserToGroup, deleteRemoveUserFromGroup, putUpdateUserGroup } from '@/api/UserGroup';
import CreateGroupModal from './createGroupModal';
import UpdateGroupModal from './updateGroupModal';
@@ -40,6 +40,9 @@ const GroupList = () => {
const [anchorEl, setAnchorEl] = useState(null);
const memberInputRef = useRef(null);
const adminInputRef = useRef(null);
+ const license = useRequest(() => {
+ return v1LicenseList({})
+ }).data
const filteredData = useMemo(() => {
if (!groupData?.data?.groups) return [];
@@ -353,6 +356,7 @@ const GroupList = () => {
variant='contained'
color='primary'
onClick={() => setOpenCreateGroupModal(true)}
+ disabled={license?.edition !== DomainLicenseEdition.LicenseEditionEnterprise}
>创建成员组
diff --git a/ui/src/pages/model/components/modelCard.tsx b/ui/src/pages/model/components/modelCard.tsx
index cf838eb9..e5511c68 100644
--- a/ui/src/pages/model/components/modelCard.tsx
+++ b/ui/src/pages/model/components/modelCard.tsx
@@ -344,7 +344,9 @@ const ModelItem = ({
)}
- {data.status === GithubComChaitinMonkeyCodeBackendConstsModelStatus.ModelStatusInactive && (
+ {data.status === GithubComChaitinMonkeyCodeBackendConstsModelStatus.ModelStatusInactive &&
+ data.model_type !== GithubComChaitinMonkeyCodeBackendConstsModelType.ModelTypeCoder &&
+ (