本卡屬 FR-132(母卡 CM-2510),A.5 存取管理前端第 5 張(收口),取代作廢的 CM-2540。依賴:T-5.2~T-5.4 完成。建議 model:sonnet。
新頁做好後把舊的收乾淨:帳號編輯表單不再能改角色(只顯示他現在有哪些角色,加一個「管理指派」連到指派頁);舊的「權限管理」網址導到新頁;左側選單把「權限管理」換成「存取管理」,底下兩項「角色」「指派」;全站畫面上「能力點」這個詞改成「權限」。
另有一個後端陷阱要一起修,不修的話新的起訖日功能會被帳號頁默默清掉:今天存一次帳號,那個人所有指派的到期日都會被清成永久。
~/Projects/Jedicogy/module/jedi-python-package/jedi-iam/jedi_iam/app/service/user_service.py:277-288 從 payload 的 user_roles 重建指派,:352 先 delete_user_role_by_user_id 全刪再重建,重建時不帶 starts_at/ends_at。走這條的有兩支:管理員改帳號 PUT /user/<uid>(api/routes/user_route.py:154-166)、本人改個人資料 PUT /user-profile/<uid>(user_route.py:246-255 從既有指派重組,同樣漏起訖)。指派頁設好的到期日,只要有人存一次帳號就消失,且無錯誤訊息。~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/views/user-manage/UserMTRBACForm.vue(651 行,路由 /auth/user-form-mtrbac,name user-form,UserManage.vue:158,163,297 都 push 到它):它管基本資料+角色,不能整支退役,只拿掉角色區塊(:548-578 的 DataTable 與 :204-233,320-400 的增改刪邏輯)。~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/views/user-manage/UserProfileForm.vue(691 行,已超 800 行上限前的警戒,不准往裡加)::456 只用 UserTenantGroupList 唯讀顯示,:189-203 存檔時還會送 user_roles——要拿掉這個欄位。~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/config/router/index.js:100-115(role-manage、role-form);AppBreadcrumb.vue:19 對 role-form 有特判;menu.json 有 role-manage「權限管理」、role-form「編輯權限」、role-form-add。ui_routes id 3 role-manage(url /auth/role-manage、pid 45「組織與存取」、sort 40),ALL 規則 iam.role.read。hasCap 首腦 grep:15 支檔、全部已是三段式新名(例 grc.project.read ×8、flow.template.*、detection.profile.*、asset.device.*;常數檔 src/config/scanZone.js:3、aiQuota.js:3 也是新名),沒查到舊名。本卡只做確認,不必再改。src/config/locales/i18n/zh-tw/error-code.json 4 處(AUTH_400008、AUTH_400009、LICENSE_403004、GRC_403022)、en/error-code.json 6 處(capability)、en/pages.json 1 處;另有幾支 .js/.vue 出現在註解(註解不用改)。~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/views/user-manage/UserMTRBACForm.vue:204-233,320-400,548-578 角色區塊與邏輯(拿掉,改唯讀摘要)
~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/views/user-manage/UserProfileForm.vue:189-203 存檔不再送 user_roles
~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/components/user-manage/UserTenantGroupList.vue (91 行) 唯讀摘要可直接重用
~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/config/router/index.js:100-115 role-manage/role-form 改 redirect
~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/layout/AppBreadcrumb.vue:19 role-form 特判
~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/config/locales/i18n/{zh-tw,en}/menu.json、error-code.json、pages.json
~/Projects/Jedicogy/module/jedi-python-package/jedi-iam/jedi_iam/app/service/user_service.py:258-352 update_user:沒送 user_roles 就不動指派
~/Projects/Jedicogy/module/jedi-python-package/jedi-iam/jedi_iam/api/routes/user_route.py:246-255 個人資料 PUT 不再重組 user_roles
scripts/sql/(BE) 選單 migration
update_user 改成 user_roles 不在 kwargs(或為 None)時完全不碰指派(不刪、不重建);user_route.py:246-255 拿掉重組 user_roles 那段——但保留它的用意:那段是防一般使用者靠自助端點把自己改成管理員(user_route.py:228-232 註解),拿掉前確認 UserProfileRequest 白名單本來就不收 user_roles、且 update_user 在沒送時真的不碰指派,兩件都成立才能拿。新增帳號(create_user,user_service.py:133)的 user_roles 是否保留由你看 UserMTRBACForm 新增模式需不需要——建議保留(建帳號時順手給一個角色),但要把 starts_at/ends_at 一起傳下去。改完跑 jedi-iam 既有的 user service 測試檔確認沒弄壞。UserMTRBACForm.vue 拿掉角色 DataTable 與增改刪邏輯,改放 UserTenantGroupList 唯讀摘要+「管理指派」按鈕(router.push 到 T-5.3 指派頁帶 ?user_uid=;T-5.3 若沒接 user_uid query,順手補);存檔 payload 不送 user_roles、tenants、org_units 中與指派相關的部分(先確認後端哪些欄位會被整批覆蓋,見 user_route.py:228-231 註解)。新增帳號模式要不要保留一個角色選擇,依 ① 的決定。UserProfileForm.vue:189-203 payload 拿掉 user_roles。本檔 691 行,只准刪不准加。role-manage → redirect 到 T-5.2 的角色列表;role-form → redirect 到角色明細(帶 uid query 轉成 path param,沒帶則到新增);刪 AppBreadcrumb.vue:19 特判;舊 RoleManage.vue、RoleForm.vue 刪檔(grep 確認沒有別處 import)。user-form 路由保留(它是帳號編輯表單),路由名與網址要不要改成 /access/... 先回寫首腦問,預設不改。role-manage 那列改成「存取管理」節點,底下兩個子項「角色」(url 新角色列表,ALL iam.role.read)與「指派」(url 新指派頁,ALL iam.user.read)。先確認 AppMenuItem.vue(273 行)能畫三層;畫不了就改成「存取管理」單一項連角色列表、指派頁從頁內頁籤進,並回寫首腦說明。menu.json zh-tw/en 補 name 與 description 兩段。