所有分數欄位 DB schema 為
decimal(6,3)——支援 0.125 公式造成的 3 位小數。
出勤扣分每小時 0.125 → 累積會產生 -0.375 / 69.625 / 75.125 等需要 3 位小數的數字。
舊 decimal(5,2) 會精度損失,2026/04/17 遷移加寬至 decimal(6,3)。
| 表 | 欄位 |
|---|---|
ExamRecord |
ScoreA ~ ScoreI、AttendanceDeduction |
ExamParticipant |
FinalScore、ScoreBeforeAdjust |
AnnualResult |
*Score(多欄) |
GradeAdjustment |
OriginalScore、AdjustedScore |
Migrations/20260417113907_WidenScoreDecimalsTo6_3
修正舊 decimal(5,2) 累積的精度損失:
Docs/dev/recalc_scores.sqlPOST /api/hr/recalc-scores用 fmtScore:
| 動作 | 精度 |
|---|---|
| 評分選項(10 個) | 0.5 單位(0.5, 1.0, ... 5.0) |
| 強制修正 / 調整分數 | 0.5 單位四捨五入(前端 onBlur 自動 round) |
例:使用者輸入 75.3333 → onBlur → 75.5