人員管理保護機制(CheckProtectedAsync)

當虛擬部門已完成考核確認、週期已鎖定或年度專案已鎖定時,HR 修改人員管理需輸入管理員密碼。

保護條件(任一成立即觸發)

  1. 考核週期已 Locked
  2. 年度專案已 Locked
  3. 該員工所屬虛擬部門的 DepartmentConfirmation(GradeReview 或 Settlement)已 Confirmed

密碼驗證通過後自動解鎖

  • 週期 Locked → 解鎖回 Active
  • 年度專案 Locked → 解鎖回 Settled
  • 該虛擬部門的 DepartmentConfirmation → 作廢

受保護的 8 個端點

端點類型Helper
PUT participants/{id}/reviewers單筆CheckProtectedAsync
PUT participants/{id}/exclude單筆CheckProtectedAsync
PUT participants/batch-exclude批次CheckProtectedBatchAsync
DELETE participants/batch-delete批次CheckProtectedBatchAsync
PUT participants/batch-clear批次CheckProtectedBatchAsync
PUT participants/batch-include批次CheckProtectedBatchAsync
PUT participants/{id}/job-level單筆CheckProtectedAsync
PUT participants/batch-job-level批次CheckProtectedBatchAsync

前端保護閘門(兩層機制)

  1. 前置保護閘門protectionGate):操作前先查 GET /hr/periods/{id}/protection-map,若部門已鎖定/已確認,立刻彈出紅色警告 Modal 列出所有影響(解鎖週期、作廢確認等),要求輸入 HR 管理員密碼後才開啟編輯對話框。密碼存入 preAuthedPassword,自動帶入後續 API 呼叫。
  2. 後端攔截 fallbackprotectedOp):若前端預檢資料過期,後端 CheckProtectedAsync 仍會擋下並回傳含「HR管理員密碼」的錯誤,前端自動彈出密碼 Modal 重試。

Protection Map API

GET /api/hr/periods/{periodId}/protection-map — 回傳:

  • periodLocked:週期是否已鎖定
  • projectLocked:年度專案是否已鎖定
  • confirmedDepartments:各虛擬部門的 GradeReview / Settlement 確認狀態