本卡為 FR-155 母案。把寫死的四個專案角色做成跟系統角色一樣可建可勾,4 批 11 子卡,一版做完。子卡清單在末段。
專案參與者今天是四個寫死的英文字(manager/reviewer/auditor/viewer),散在後端、前端、六個套件約一百多處,連流程圖的 XML 裡都有;系統角色卻是管理員自己建、自己勾能力點(系統裡「可以做某件事」的最小單位),兩邊沒有關係。
做完以後:角色管理頁分「系統角色」「專案角色」兩個分頁籤,專案角色有自己的一組能力點(proj.*,例如「稽核判定」「標記已審閱」);專案參與者還是每個專案挑人,但下拉從專案角色表讀,客戶可以自建「資深稽核員」;程式裡所有「他是不是 manager」改成「他在這個專案的角色有沒有這個能力點」。同一個人在 A 專案是負責人、B 專案只是瀏覽者照樣做得到。
main_role 存角色名,客戶改角色名流程就壞;進行中實例約 4,400 份 XML 快照。proj.<資源>.<動詞>,assignable_scopes=['project'],初版 14 個,與 grc.*(租戶層)嚴格分開。is_default_owner=true 不可刪、建專案建立者自動拿它;使用中專案數 >0 不可刪。project_role_id FK,舊 role 文字欄並存一版後退役;寫入雙寫。proj.* 只從「這個專案的參與者指派」展開,不從 user_roles 展開;系統 *.*.* 不含 proj.*;不是參與者就看不到專案。audit_scope(內稽/外稽)留在參與者列,只對有 proj.audit.judge 的參與者生效。my_capabilities,FE 新指令 v-can-project,權限名由 BE 產常數檔。main_role 改存能力點名;舊四值讀取時換算;實例 XML 不碰;manager 全域覆寫改成有 proj.stage.advance-any。