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 && + (