本卡屬 FR-132 A.6(子母卡 CM-2559),CM-2565 拆出的第三棒 M2c。依賴:M2b 出 JSON;與 CM-2563 協調(本卡做資料來源與第三層說明,2563 做三層選單殼與預覽 Dialog)。建議 model:opus。
角色設定頁的權限樹改讀矩陣,不再在瀏覽器自己拼;第三層每顆權限多一行「此權限涵蓋:功能點 A、B、C」,管理員勾的時候知道自己在給什麼。勾選與存法不變。
CM-2565 runner 實查(不必重查):
- 權限清單在程式碼:core.plugins.PLUGINS + core.host_capabilities.HOST_CAPABILITIES,208 顆;產生器 import 這兩份,不連 DB
- 「頁→進入權限」只在 DB:ui_routes 51 條、route_capabilities 123 筆(每頁 read=ALL、其餘 ANY);程式碼無宣告
- FE 權限來源:userStore.capabilityNames(全集)、capabilityBypass(超管)、useUserUtil().hasCap 唯一出口
- 散寫基線:hasCap( 37 處(33 處字面)、pagePermission.includes 4、can( 9(RoleList/RoleDetail)
- v-can 採編譯期轉換(vite nodeTransforms 把 v-can 改寫成 v-if="$can(X)",原有 v-if 以 AND 合併;$can 掛 globalProperties);Vue 先跑內建 v-if 再跑自訂轉換,要在父節點處理子元素、根節點在 ROOT 層處理;PrimeVue Menu items 掛不了,改 items 過濾並登記豁免
樹今天的來源:FE src/views/access/RoleDetail.vue:30,114(/ui-routes + /capabilities/menu → usePermissionGrouping)
樹元件:src/components/access/PermissionMenuTree.vue、PermissionTree.vue
預覽:VisibleMenuPreview(CM-2563 改預覽 Dialog 時重用)
矩陣 JSON:M2b 產出 docs/features/FR-132-2610-access-management/permission-matrix.json
GET /permission-matrix(jedi-iam 或 BE,登入即可、無租戶差異的靜態資料可加 ETag):回 M2b 的 JSON(決策者傾向端點,升級後矩陣與後端表同步;FE build 打包是備案,回寫寫理由)。BE commit 670bf37a8、FE commit f509d7b5(皆 feature/azure-iam,未 push)。BE 重啟時間:2026-10-07 21:16:56(重啟前 git log -3 最新為 94df23a6a)。