From ccdaa67787ab0bd88c77697680ea856bb7661cd2 Mon Sep 17 00:00:00 2001 From: bot_dev2 Date: Thu, 6 Aug 2026 14:35:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=20issue=20#181=20?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=92=AD=E7=A7=8D=20v5=E2=80=94=E2=80=94?= =?UTF-8?q?=E6=A6=82=E8=A7=88/=E6=8E=A8=E5=B9=BF=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E5=88=A0=E9=99=A4=EF=BC=88=E5=90=88=E5=B9=B6?= =?UTF-8?q?=20QA=201aaa159=20=E7=9A=84=20Project=20=E7=B3=BB=E5=88=97?= =?UTF-8?q?=EF=BC=9Bdisplay=3D0=20=E5=AF=B9=E8=B6=85=E7=AE=A1=E6=97=A0?= =?UTF-8?q?=E6=95=88=E9=A1=BB=E5=88=A0=E9=99=A4=EF=BC=8C=E5=85=88=E5=AD=90?= =?UTF-8?q?=E5=90=8E=E7=88=B6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/fba/seed_iaop_menus.py | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/deploy/fba/seed_iaop_menus.py b/deploy/fba/seed_iaop_menus.py index c3601d9..58635bb 100644 --- a/deploy/fba/seed_iaop_menus.py +++ b/deploy/fba/seed_iaop_menus.py @@ -68,12 +68,14 @@ FBA_ADMIN_MENUS = ["system", "monitor", "log", "scheduler"] # 退役菜单(issue #174 [B8]):旧 #161 版注册的 users/mobile 改为隐藏(display=0),保留数据 # 另隐藏 fba init 测试数据自带的 概览(Dashboard) 三个菜单——其 component # 指向的 /dashboard/analytics|workspace 视图在 UI 中不存在,点击必 404。 -# 以及 FBA 推广菜单「项目」(文档/Github/Apifox 外链目录,与业务无关)。 -LEGACY_HIDE = ["users", "mobile", - "page.dashboard.title", - "page.dashboard.analytics", - "page.dashboard.workspace", - "Project", "Document", "Github", "Apifox"] +# 退役/不存在菜单:逻辑删除(deleted=1) +# - Analytics/Workspace/Dashboard(issue #181:FBA init 测试数据自带概览,视图不存在 → 404) +# - Document/Github/Apifox/Project(FBA 推广外链菜单,与业务无关) +# - users/mobile(issue #174 [B8] 退役) +# 注:FBA sidebar 查询仅过滤 deleted=0(不过滤 display/status),display=0 对超管无效, +# 必须删除才从 sidebar 消失;先删子菜单再删父,否则 409。 +LEGACY_DELETE = ["Analytics", "Workspace", "Document", "Github", "Apifox", + "Dashboard", "Project", "users", "mobile"] class FbaClient: @@ -127,6 +129,9 @@ class FbaClient: def put(self, path, body): return self._req("PUT", path, body) + def delete(self, path): + return self._req("DELETE", path, None) + def flatten_menu_names(tree, out=None): """菜单树 → {name: id}(含子级)""" @@ -194,19 +199,12 @@ def main(): component=m.get("component"), icon=m.get("icon")) print(f"[ok] 菜单:新建 {created},更新 {updated}") - # issue #174 [B8]:退役菜单隐藏(users/mobile,旧 #161 版残留) - for legacy in LEGACY_HIDE: + # 退役/不存在菜单:逻辑删除(issue #174 [B8] + issue #181) + for legacy in LEGACY_DELETE: if legacy in existing: mid = existing[legacy] - cli.put(f"/sys/menus/{mid}", { - "title": legacy, "name": legacy, - "path": f"/iaop/{legacy}", "parent_id": None, "sort": 99, - "icon": None, "type": 1, "component": None, - "perms": f"iaop:{legacy}", "status": 1, - "display": 0, "cache": 0, "link": None, - "remark": "退役菜单(issue #174,由 FBA 系统管理承载)", - }) - print(f"[ok] 隐藏退役菜单 {legacy}(display=0)") + cli.delete(f"/sys/menus/{mid}") + print(f"[ok] 删除退役菜单 {legacy}(id={mid},deleted=1)") # ---- 2. 播种角色并分配菜单 ------------------------------------------- menu_ids = flatten_menu_names(cli.get("/sys/menus"))