-- ============================================================ -- 薪酬核算:actual_days(实出天数)允许为空 -- -- 背景: -- 原字段是 INT NOT NULL DEFAULT 0,导致「该月还没有考勤汇总」和 -- 「实出 0 天」在数据库里都存成 0,无法区分。 -- 缺勤扣款逻辑于是把「未录考勤」当成「实出 0 天」,把整月工资扣光。 -- -- 语义约定(与 HrmSalaryCalculationServiceImpl#calculateAttendanceDeduction 对应): -- actual_days IS NULL → 该月未生成考勤汇总,视为满勤,不做旷工扣款 -- actual_days = 0 → 实出 0 天(人工填写),按 100% 扣旷工 -- actual_days = N → 按 应出 - N 计算旷工天数(超出请假单覆盖的部分) -- ============================================================ ALTER TABLE hrm_salary_calculation MODIFY COLUMN actual_days INT NULL DEFAULT NULL COMMENT '实出天数(null=该月未生成考勤汇总,不扣旷工)';