PAM 系統所有等第相關計算的單一來源。Controller 與各 fallback 一律呼叫此服務,禁止自行實作重複邏輯。

主要方法

方法 用途
CalcGrade(score) 分數 → 等第(特優/優等/甲等/乙等/丙等)
GradeRank(grade) 等第 → 排序分數(比較大小用)
ComputeScoreC(A, B, isMerged) 當次平均分數 C(合併主管→C=A;否則 (A+B)/2)
ComputeScoreD(A, B, isMerged, attendance) 當次成績 D = C + 出勤扣分
ComputeAttendanceDeduction(hours) 事假時數 → 扣分(每小時 -0.125)
ComputeByRate(n) / QuotaSuggestion 人數 → 建議配額(餘額法,sum 永遠 = n)
GetSuggested(quota, grade) 從 QuotaSuggestion 取對應等第建議數
CalcCeiling(...) 等第天花板(懲處/假勤/年資 → 天花板等第 + 原因)

設計原則

  1. 單一來源:HrController / ReviewController 的 CalculateGrade 與各處 fallback 一律呼叫此服務
  2. 新功能不得重寫:需要等第判定或配額計算時,一律在 GradingService 補方法

核心公式

C = (A + B) / 2     若 R1 ≠ R2
C = A               若 R1 = R2(合併)

D = C + 出勤扣分     // 出勤扣分 ≤ 0

詳見:等第規則出勤扣分等第天花板

相關概念