2026-10-07 · 喵窝资源铺
钱账系列第四篇。上一篇加班表×工资表对账;底薪这边见 出勤天数×底薪核算(21.75折算/病假打折/全勤奖)查的是「工时总数对不对」,这篇往下钻一层:倍率。法律规定加班费三档——工作日 1.5×、休息日 2×、法定节假日 3×,但现实里财务图省事整月按一个倍率算、或者只把调休单当依据漏掉一档,一笔 8 小时的法定节假日加班按 2× 算就少 200 块,全公司一年下来是真金白银。这版脚本按加班日期逐笔定档算应发,再跟工资条实发对,对不上还自动猜是哪种错。代码实跑验证,真实输出贴在下面。
测试数据:加班记录 9 笔(8 人),工资条 8 行,时薪统一 25 元/h,法定节假日取 2026-10-01~10-07。故意埋 6 类陷阱——李四法定 6h 按了 2×(应发 450 实发 300);王五周末 8h 整体按 1.5×(应 400 实发 300);孙七周末那笔 2h 被整笔漏掉(应 212.5 实发 112.5);吴十周末 4h 按 1.5×(应 200 实发 150);郑十一周末 4h 反而按了 3×(多发);周九加班记录里查无此人却发了 300。张三(法定 12h×3×=900)、赵六(平日+周末混合 250)做对照组。跑完:
复核完成: 8 人, 异常 6 人 ! 吴十 少发 50.00 元:全部按 1.5× 算(未按日期分档);周末被按 1.5× 算(应 2×) ! 周九 工资条发了加班费但加班记录为空(凭空多算?) ! 孙七 少发 100.00 元:疑似漏计 2026-10-10 那笔 2h ! 李四 少发 150.00 元:全部按 2× 算(未按日期分档);法定节假日被按 2× 算(应 3×) ! 王五 少发 100.00 元:全部按 1.5× 算(未按日期分档);周末被按 1.5× 算(应 2×) ! 郑十一 多发 100.00 元:全部按 3× 算(未按日期分档)
逐项验收:6 处陷阱全对出,且每条都给出了可解释的原因猜测(李四那条「全部按 2× 算」和「法定被按 2× 算」同时吻合,脚本把两种假设都列出来让人工定夺);张三、赵六两个对照组零误报;吴十「8小时」这种带单位的时长和「张三 」带尾随空格的姓名都正常归一。边界 7 项全过:缺列报错(列出缺哪些+实际表头)/ 坏日期「10月2号」明确报错不静默 / 空加班表全员报凭空多算不崩 / 单位字符串+空格姓名归一 / HOLIDAYS 环境变量覆盖节假日表(调休年各年不同,必须可配)/ 内容级幂等 / 文件不存在报错。
| 环节 | 规则 |
|---|---|
| 日期定档 | 在节假日表内 → 3×;周六日 → 2×;其余 → 1.5×。节假日表可用 HOLIDAYS=2026-10-01,... 覆盖 |
| 应发 | 逐笔 时长 × 时薪 × 当日倍率,累加(不是总时长×单一倍率) |
| 差额 > 0.05 元 | 标「少发」,按四个假设逐一试算:整体错档(1.0/1.5/2.0/3.0×)→ 单类日子降档 → 漏计某笔 → 都不吻合才说「需人工查」 |
| 差额 < −0.05 元 | 标「多发」:倍率用高一档或加班表缺记录 |
| 名单不齐 | 工资条有、加班表无 → 凭空多算;反之 → 疑似漏发 |
容差 0.05 元是给 112.5 这类半工时小数留的浮点余量;时薪和加班费支持 1,234.5/元/小时 等写法。
先 pip install openpyxl。加班记录列:姓名 / 日期 / 时长;工资条列:姓名 / 时薪 / 加班费。运行:
python ot_payrate_recon.py 加班记录.xlsx 工资条.xlsx 复核结果.xlsx # 节假日表不同年份/地区可覆盖: HOLIDAYS=2027-01-01,2027-02-15 python ot_payrate_recon.py ...
输出 xlsx 一张表:姓名 / 笔数 / 平日h / 周末h / 法定h / 应发 / 实发 / 结论——前面几列本身就是这张工资条的加班结构画像,异常行结论直接写人话。
第一版猜测逻辑用 if/elif 串起来:试「全部按 2× 算」不中再试「法定降档」,命中一个就停。但李四那个 case(法定 6h 发 300)两个假设同时吻合——整月按 2× 算和只把法定降成 2× 算,金额恰好一样。只报第一个会把「周末的班是不是也错了」这个可能性直接藏掉,人工顺着单一结论去查就查窄了。改成把所有吻合的假设都列出来,让拿结果的人自己看加班构成表判断。教训:对账工具报「原因」时,能同时成立的解释必须并列给出,宁可多报一条假设,不要替用户收敛。
「加班费对不对」要拆成两层:总工时对不对(上一篇),和每一小时的单价对不对(本篇)。只查第一层,倍率错误全部漏网。
钱账系列:加班表×工资表工时对账、借款×报销冲抵对账、银行流水×报销单对账、报名表×付款记录对账;排班系列:换班申请链核对、月度跨表班次汇总、三表联合工资体检单。