分數精度

所有分數欄位 DB schema 為 decimal(6,3)——支援 0.125 公式造成的 3 位小數。

為什麼 (6,3) 不是 (5,2)

出勤扣分每小時 0.125 → 累積會產生 -0.375 / 69.625 / 75.125 等需要 3 位小數的數字。

decimal(5,2) 會精度損失,2026/04/17 遷移加寬至 decimal(6,3)

涉及欄位

欄位
ExamRecordScoreA ~ ScoreIAttendanceDeduction
ExamParticipantFinalScoreScoreBeforeAdjust
AnnualResult*Score(多欄)
GradeAdjustmentOriginalScoreAdjustedScore

遷移

Migrations/20260417113907_WidenScoreDecimalsTo6_3

歷史資料重算

修正舊 decimal(5,2) 累積的精度損失:

  • SQL 腳本:Docs/dev/recalc_scores.sql
  • API:POST /api/hr/recalc-scores

前端顯示統一

fmtScore

  • 預設 3 位小數
  • 尾數 0 時降為 2 位(避免「75.250」這種冗餘顯示)

評分輸入限制

動作精度
評分選項(10 個)0.5 單位(0.5, 1.0, … 5.0)
強制修正 / 調整分數0.5 單位四捨五入(前端 onBlur 自動 round)

例:使用者輸入 75.3333 → onBlur → 75.5

相關概念

強連結(原文明確提及)

← 回到 wiki