側邊欄選單分組 — 詳細白話需求

欄位 內容
草稿來源 docs/draft_requirement_spec/menu-group/requirement.md(原始草稿)
撰寫日期 2026-05-26
撰寫者 Claude(由 raymond 提出需求 + 釐清)
狀態 白話需求討論中(Phase 0),尚未進入 Phase 1 設計階段

1. 為什麼要做這件事

目前系統側邊欄選單全部攤平成一層(DB public.ui_routes 共 39 個項目,全部 pid=0),即使有些功能項目已經 enable=0 不顯示,仍然顯示在使用者眼前的選單長到「太冗長」、不容易找到對應功能。

使用者希望按照業務領域把選單分成 7 個分組,每個分組是一個可展開的父節點,下面掛上對應功能入口,讓側邊欄一眼就能看出「我要找的東西在哪一類」。


2. 期望的最終結果(使用者看到的)

側邊欄從上到下依序變成這 7 個分組,每個分組是可展開/收合的父節點:

1. 專案與任務        ▼
2. 合規與稽核        ▼
3. 溝通與互動        ▼
4. 租戶與組織        ▼
5. 系統管理          ▼
6. 系統設定          ▼
7. AI 與分析         ▼

各分組底下包含的功能入口(按目前使用者實際看到的中文標題列示,括號內是內部對應的 ui_routes.name):

Group 1:專案與任務(icon: pi pi-briefcase

  • 專案儀表板(project-dashboard)— ⚠ 目前 AppMenu.vue 寫死,需搬進 DB
  • 待辦任務(my-tasks)— ⚠ 目前 AppMenu.vue 寫死,需搬進 DB
  • 專案管理(project-list
  • 我的稽核(audit-manage
  • 專案調查結果(report-manage

Group 2:合規與稽核(icon: pi pi-shield

  • 合規資源庫(module-frame
  • 合規框架管理(compliance-framework-manage
  • 檢測工具管理(tool-plugin-manage
  • 流程範本管理(flow-template-manage

Group 3:溝通與互動(icon: pi pi-comments

  • 公告(bulletin-list
  • 公告管理(bulletin-manage
  • 問卷管理(survey-manage
  • 回饋(system-feedback-manage
  • 系統回饋管理(system-feedback-view
  • 回饋整合設定(issue-integrate-config

Group 4:租戶與組織(icon: pi pi-building

  • 租戶管理(tenant-manage
  • 機關(構)單位管理(department-manage
  • 帳號管理(user-manage
  • 權限管理(role-manage

Group 5:系統管理(icon: pi pi-cog

  • 選單管理(system-menu-manage
  • 資訊系統管理(information-system-manage
  • 設備管理(device-manage
  • 儲存設備設定(storage-config
  • 雲端空間整合(cloud-integrations

Group 6:系統設定(icon: pi pi-sliders-h

  • 郵件伺服器設定(smtp-config
  • LDAP伺服器設定(ldap-config
  • 通知設定(notify-config
  • 操作日誌(user-log

Group 7:AI 與分析(icon: pi pi-chart-line

  • AI動態儀表板(ai-dashboard

3. 行為規則(使用者體驗層面)

3.1 權限對應規則

對象 是否做權限控制 行為
葉節點(功能入口) 維持現狀 沿用 ui_routes ↔︎ route_capabilities ↔︎ role_capabilities 既有 RBAC 機制,使用者沒對應 capability 就看不到
分組節點(7 個分組標題) 不掛 capability 由「底下是否還有可見子節點」決定要不要顯示
「專案儀表板」「待辦任務」這 2 個搬進 DB 的項目 不掛 capability 每個 user 都看得到(含新進 user,不需另外設權限)

為什麼這樣可行:BE jedi-auth 套件 ui_route_repo_impl.py:103-107 已實作「若路由無任何 route_capabilities 關聯設定 → 視為可見」的 fallback 邏輯。所以不掛 capability 等同於「對所有人開放」,免去額外建 capability 的繁瑣。

3.2 空分組自動隱藏規則

當某個使用者的角色 / capability 配置下,某個分組底下所有葉節點都被權限過濾掉時,該分組標題也不要顯示

例如:某個 user 沒有「租戶管理 / 機關單位管理 / 帳號管理 / 權限管理」中任何一項權限,那「4. 租戶與組織」這個分組標題就完全不出現在他的選單上(而不是顯示一個點開來什麼都沒有的空殼)。

3.3 分組順序

依上面 1~7 的編號順序,由上而下顯示。不可更動這個順序(已是使用者明確指定的最終順序)。

3.4 分組內項目順序

每個分組內的功能入口,依上面列示的順序顯示(不再依照舊版 ui_routes.sort 的全域排序,而是改成「分組內局部排序」)。


4. 範圍邊界(in scope / out of scope)

4.1 In Scope(本期要做)

  • public.ui_routes 新增 7 個分組節點(pid=null/0,icon 如上述)
  • 把 27 個現有 ui_routes 葉節點的 pid 指向對應分組節點
  • 新增 2 個 ui_routes(project-dashboard / my-tasks),對應「Group 1」底下的「專案儀表板」「待辦任務」
  • 修改 FE AppMenu.vue 移除寫死的 grcItems 陣列(讓兩個項目改從 /user/web-menu API 取得)
  • BE get_user_web_ui_routes(在 jedi-auth 套件內)加上「空分組自動隱藏」邏輯
  • 設定每個分組節點與對應 sort 值,確保 1~7 順序固定

4.2 Out of Scope(本期不做)

  • 不處理 enable=0 的「附加頁面」:DB 內已 enable=0 的 12 個項目(workflow-setup / workflow-view / textbook-* / resource-version-manage / resource-manage / cruise-project-manage / cruise-feedback-view / report-view / customer-dashboard-editor / user-guide保持原狀不動(不設 pid、不改 enable),它們本來就被 BE 過濾掉,不會出現在新版選單上。
  • 不做 3 層深的樹狀結構:所有功能入口都是分組底下「直接掛」的葉節點,不再做更深的子選單。
  • 不重新評估或整併現有功能:例如「workflow-*flow-template-manage 是否功能重疊」這類議題本期不討論。
  • 不改 i18n 翻譯內容:分組名稱(「專案與任務」「合規與稽核」⋯)的中文直接寫進 ui_routes.nameFE 顯示時優先用 i18n key 對照,找不到對照就直接顯示 name 原文(這部分行為視 AppMenuItem.vue 的實作而定,需在 Phase 1 確認)。

5. 預估的改動範圍(給後續評估設計用)

這只是初估,正式的拆解、檔案清單、影響面盤點等留到 Phase 3「實作計畫」階段再做。

層面 預估改動
DB migration 1 份 SQL:新增 9 筆 ui_routes(7 個分組 + 2 個寫死搬遷項)、更新 27 筆既有 ui_routes 的 pid
i18n(FE) zh-tw/menu.json / zh-cn/menu.json 新增 7 個分組節點的 i18n key(若採用 i18n key 方案;若直接用 ui_routes.name 顯示中文就不用改 i18n)
BE jedi-auth 套件 ui_route_repo_impl.pyuser_service.get_user_web_ui_routes 加「組樹完成後剪枝:分組節點若 items 為空就移除」邏輯
FE AppMenu.vue 移除寫死的 grcItems 陣列,全部走 permissions.value(即 /user/web-menu 回傳結果)
權限初始化 不需新增 capability / role_capabilities(分組節點與寫死搬遷項都不掛 capability)

6. 已釐清的關鍵決策(決策紀錄)

# 議題 決策 決策日期
1 未在 7 組草稿內的舊選單怎處理? 全部 enable=0、保持原狀不動。BE 自動過濾,不會出現在新版選單上。 2026-05-26
2 AppMenu.vue 寫死的「專案儀表板 / 待辦任務」怎處理? 搬到 DB 統一管理,但不掛 capability(讓所有 user 都看得到),免去額外建 capability。 2026-05-26
3 分組標題本身要不要做權限控制? 不掛 capability。底下無可見子節點時自動隱藏分組(BE 端剪枝)。 2026-05-26
4 「回饋」對應的是哪個 ui_routes? system-feedback-manage(i18n: "回饋")。system-feedback-view(i18n: "系統回饋管理")是另一項目,兩者都保留並歸到 Group 3。cruise-feedback-view 是 enable=0 的未列項目,保持原狀不動。 2026-05-26
5 module-frame 對應的中文是什麼? FE i18n 翻譯為「合規資源庫」(不是 resource-manage)。resource-manage 在 i18n 是「資源上下架」、enable=0,屬於本期不動的未列項目。 2026-05-26
6 1~7 編號就是顯示順序? 是,1 在最上、7 在最下,不可變更。 2026-05-26
7 分組 icon 怎決定? 由 Claude 任意提案使用者 review;本份文件已採用第一版提案(見第 2 段)。 2026-05-26

7. 還需要再確認的細節(移交 Phase 1 設計階段時要釐清)

  1. i18n 設計選擇:分組標題的中文是 (a) 直接寫進 ui_routes.name 由 FE 原樣顯示,還是 (b) 在 ui_routes.name 寫 i18n key、FE 透過 menu.json 對照後顯示?兩種做法都可行,差別在英文版 / 簡體版怎麼處理。Phase 1 設計時決定。
  2. i18n key 的命名(若採方案 b):例如 menu.group.project-task 等。
  3. BE「空分組剪枝」邏輯放哪一層:放在 jedi-auth 套件的 user_service.get_user_web_ui_routes 內(影響其他 consumer),還是主專案在 route 層 wrap?外部套件異動規範參考 CLAUDE.md。
  4. DB migration 的 uid 怎產生:分組節點與兩個搬遷項的 uid 規則(既有 ui_routes 都有手動指派的 uid,需要保持一致風格)。
  5. 新版 sort 值的安排:是要全部重新編號(例如分組 sort=10/20/30...,組內葉節點 sort=10/11/12...),還是只動分組節點 sort、葉節點 sort 維持現狀靠 pid 自動分組?

8. 後續流程指引

依專案 docs/claude/feature-development-workflow.md 流程:

  • Phase 0(白話需求):✅ 本文件已完成。
  • Phase 1(brainstorm 設計):把這份白話需求帶進 superpowers:brainstorming skill,產出 docs/features/FR-029-2605-menu-group/design.md,包含 DB schema 變動、API 行為、FE 改動、i18n 策略、邊界 case 處理等技術設計。
  • Phase 2(歸檔):本資料夾 docs/draft_requirement_spec/menu-group/ 在 Phase 1 完成後搬到 docs/features/FR-029-2605-menu-group/,原資料夾刪除。
  • Phase 3(實作計畫):產出 docs/features/FR-029-2605-menu-group/implementation-plan.md
  • Phase 4(測試計畫):必要時產出 test-plan.md(本需求屬 UI 重組,BE 邏輯改動小,可能不需要重型 test plan,由 Phase 3 評估)。
  • Phase 5(實作):按 plan 執行。
  • Phase 6(review):跨 BE / FE / 測試 repo review。

附錄 A:完整對照表(27 個歸組項目)

Group ui_routes.name FE i18n 中文 來源
1 project-dashboard 專案儀表板 本期新增到 DB
1 my-tasks 待辦任務 本期新增到 DB
1 project-list 專案管理 既有
1 audit-manage 我的稽核 既有
1 report-manage 專案調查結果 既有
2 module-frame 合規資源庫 既有
2 compliance-framework-manage 合規框架管理 既有
2 tool-plugin-manage 檢測工具管理 既有
2 flow-template-manage 流程範本管理 既有
3 bulletin-list 公告 既有
3 bulletin-manage 公告管理 既有
3 survey-manage 問卷管理 既有
3 system-feedback-manage 回饋 既有
3 system-feedback-view 系統回饋管理 既有
3 issue-integrate-config 回饋整合設定 既有
4 tenant-manage 租戶管理 既有
4 department-manage 機關(構)單位管理 既有
4 user-manage 帳號管理 既有
4 role-manage 權限管理 既有
5 system-menu-manage 選單管理 既有
5 information-system-manage 資訊系統管理 既有
5 device-manage 設備管理 既有
5 storage-config 儲存設備設定 既有
5 cloud-integrations 雲端空間整合 既有
6 smtp-config 郵件伺服器設定 既有
6 ldap-config LDAP伺服器設定 既有
6 notify-config 通知設定 既有
6 user-log 操作日誌 既有
7 ai-dashboard AI動態儀表板 既有

附錄 B:未列項目(12 個,全 enable=0,本期不動)

ui_routes.name enable FE i18n 中文
workflow-setup 0 工作流程設定
workflow-view 0 系統流程
textbook-execution 0 教材-執行端
textbook-tested 0 教材-受檢端
textbook-general 0 教材-一般性
resource-version-manage 0 資源版本維護
resource-manage 0 資源上下架
cruise-project-manage 0 專案管理(韌性巡航)
cruise-feedback-view 0 韌性巡航回饋管理
report-view 0 查閱背景資料盤點問卷結果數據
customer-dashboard-editor 0 自定義儀表板
user-guide 0 操作說明