本卡屬 FR-132(母卡 CM-2510),A.3 判定層第 9 張。來源:T-3.7(CM-2529)順帶發現、首腦 2026-10-07 實查屬實。依賴:T-3.2、T-3.7 已完成。建議 model:opus。優先度高:這是現在 DEV 上就在發生的功能壞掉,A.5 前端開工前必須修。

問題是什麼(白話)

角色的權限現在存在兩張表:舊表 role_capabilities(逐顆能力點 id)與新表 role_capability_patterns(萬用字元 pattern,T-2.2 建)。T-3.3 之後「這個人有什麼權限」只看新表。但角色頁的「新增角色」「修改角色」兩個動作還是只寫舊表、沒寫新表——結果是:在畫面上新建的角色一顆權限都沒有;改了既有角色的勾選,判定照舊用改之前的 pattern。畫面看起來存成功了,實際上沒生效,而且不報錯。

目前只有三條路會寫新表:出貨 seed(T-2.4)、建新租戶(T-2.4)、角色 JSON 匯入(T-3.7)。UI 這條漏了。

在哪裡(首腦核過)

~/Projects/Jedicogy/module/jedi-python-package/jedi-iam/jedi_iam/domain/service/role_domain_service.py:87-96      add_role:只呼叫 role_capability_repo.add(舊表)
~/Projects/Jedicogy/module/jedi-python-package/jedi-iam/jedi_iam/domain/service/role_domain_service.py:99-125     update_role:delete_by_role_id 再 add(舊表);最後已有 _invalidate_expansion()(T-3.2 接的)
~/Projects/Jedicogy/module/jedi-python-package/jedi-iam/jedi_iam/domain/repository/shipped_role_writer.py:13-17      write_shipped_role(role_uid, patterns, is_system, is_template, replace=False)——寫新表的唯一入口(T-2.4 建、T-3.7 加 replace)
~/Projects/Jedicogy/module/jedi-python-package/jedi-iam/jedi_iam/api/serializers/role.py:13      角色寫入 request 的 capabilities 是 List[Integer](能力點 id)
~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/views/role-manage/RoleForm.vue:104      FE 送 cap.id 清單
~/Projects/Billows/Audit-Manager/compliance-manager-be/app/auth/service/role_transfer_service.py:120-134      T-3.7 的覆蓋寫法:update_role 之後 write_shipped_role(replace=True)——照這個 pattern 做

怎麼修

要寫測試

驗收條件

手測