本卡屬 FR-132 A.6(子母卡 CM-2559),機制三張之一。決策者 2026-10-07 晚裁:不逐顆補,先把架構做對——前端分三層守門,權限真相只有一份。本卡做第一層「路由」。建議 model:opus。

這一棒在做什麼(白話)

讓每一頁都有一道「進入門檻」,而且門檻定義在後端、前端只讀不寫。今天側欄的 42 頁在後端 route_capabilities 已各有一顆 ALL 門檻;另外約 100 支內頁(新增帳號、新增角色、問卷設計器、流程範本編輯、SMTP 設定…)沒登記,前端路由守衛只擋管理員旗標,網址直入就進得去。本卡:內頁全部登記進同一張表、後端回「我能進的路由名單」、前端一個全域守衛讀名單,沒有就導去無權限頁。做完新開一頁只要後端登記一列,側欄、路由守衛、角色明細「可見頁面」三者自動一致。

在哪裡(首腦核過)

FE 路由:src/config/router/index.js,141 條 path;路由守衛 :1090(requiresAdmin)、:1104(requiresPlatformAdmin),其餘不擋
FE 路由 name 與 DB ui_routes.name 對得上的只有 38 條(其餘 ~100 條內頁 DB 無列)
DB:ui_routes(側欄頁 42 列 url≠null)、route_capabilities(ALL 39 列=每側欄頁一顆進入門檻;ANY 84 列)
BE 可見頁判定:jedi-iam infra/repository/ui_route_repo_impl.py:64 get_viewable_by_capability_names(ALL 全有或 ANY 任一)
BE 權限清單端點:GET /users/me/capabilities(CM-2560,jedi-iam f4b08dcd)
FE 權限 store:src/stores/userStore.js(CM-2560 擴充,hasCap 讀它)
盤點表:docs/features/FR-132-2610-access-management/inventory/a6-button-capabilities.md(428 顆按鈕→API→權限;內頁進入權限=該頁主要動作那顆,多半查得到)
導覽觸發:router.push 157 處、router-link 7、Button link 26(約 190 處,未盤;本卡登記完就不必逐顆藏)

怎麼做

手測

連帶

紀律