本卡屬 FR-132(母卡 CM-2510),A.3 判定層第 1 張。依賴:T-2.2。建議 model:opus。
角色改存萬用字元後,判定前要先把 pattern 展開成具體能力點集合再比對。這張卡在 jedi-iam 寫一個「展開服務」:輸入角色的 pattern 清單+能力點清單,輸出能力點名集合。之後判定、選單、檢查存取頁全部吃它(同源),所以介面要一次設計好。
~/Projects/Jedicogy/module/jedi-python-package/jedi-iam/jedi_iam/ 新增展開服務(domain service 或 app service,照 jedi-iam 既有分層放)
~/Projects/Jedicogy/module/jedi-python-package/jedi-iam/jedi_iam/authz/capability.py CapabilityGuard(下一張 T-3.3 才接,本卡只提供服務)
~/Projects/Billows/Audit-Manager/compliance-manager-be/core/plugins/identity.py:89-95 TENANT_ADMIN_EXCLUDED_RESOURCE_TYPES(主專案傳入,不要在套件寫死)
[a-z0-9-]+ 或整段 *;不合法丟 BadRequestError(400)。這支驗證函式也給 T-3.7 匯入與角色寫入用。* 或相等;輸入是 (patterns, catalog) → set[name]。catalog 是 [(name, legacy_name, is_platform, resource_type/license_module)]。*.*.* 依租戶扣:非 root 租戶展開時扣 is_platform 與排除清單內的 resource(排除清單用 license_module 舊值比對,由宿主注入,現值 cruise-project、dashboard、workflow、resource、report)。注意:扣除只套在萬用字元展開出的結果,完整名 pattern 不扣(否則 T-2.2 轉換後的非全集角色會少權限)——寫進 docstring 並在 T-2.2 確認一致。isTopTenant 類),不要另寫。*.*.read、grc.*.*、grc.project.read 三類展開正確。*.*.* 等於 DEV 實際的 103 個(以 T-2.1 後數字為準),root 租戶等於全部。grc.proj*、兩段、四段、空字串、大寫)回 400。* 比對改成前綴比對,要有測試紅。role_capabilities 舊集合相同(附比對腳本輸出)。