薪酬核算系统 - 题解

一、题目分析

本题要求根据薪酬管理制度,从员工的出勤记录和绩效评级计算当月税前应发工资。输出5个字段:final_salary、overtime_pay、bonus、deduction、is_compliant。涉及日薪计算、全勤奖、绩效奖金、加班费(分三档)、违纪熔断等规则。

二、难点分析

  1. 日薪精度问题:日薪=基本工资/22,保留2位小数。后续加班费基于日薪做乘法,精度会逐级传递,LLM极易算错。例如16000/22=727.27,727.27*3=2181.81。
  2. 熔断机制的连锁效应:旷工或重大事故触发熔断后,绩效奖金和全勤奖归零,还要额外扣基本工资20%。但加班费照常计算。LLM容易把加班费也一起清零。
  3. bonus字段的合并语义:bonus = 全勤奖 + 绩效奖金,不是单独的绩效奖金。这个字段定义与直觉不符,容易出错。
  4. 工作日加班的陷阱:工作日加班不发加班费(含在绩效中),LLM习惯性会给工作日加班也算1.5倍工资。
  5. 加班费类型混淆:周末是日薪的2倍,法定节假日是3倍,LLM容易把倍率搞反或统一用一个倍率。

三、Prompt设计思路

  1. 严格分步流程(Step1~Step6):从日薪计算开始,按固定顺序执行:日薪 -> 合规检查 -> 全勤奖 ->绩效奖金 -> 加班费 -> 汇总。每步的依赖关系清晰。
  2. 大量具体示例:提供5个完整计算示例,覆盖不同场景:有早退+节假日加班全勤+周末+节假日混合加班旷工触发熔断全勤+仅工作日加班(加班费为0的陷阱)全勤+仅周末加班(区分2倍vs3倍)
  3. 日薪查表设计:在Step1直接给出常见基本工资的日薪结果(16000/22=727.27, 15000/22=681.82等),减少除法计算错误。
  4. 显式标注易错点:在关键步骤用"注意"标记:"工作日加班不计加班费!""is_compliant=false时,绩效奖金强制=0""周末是2.0,不是3.0!"
  5. thinking标签引导:要求模型先在<thinking>中逐步计算,再输出纯净JSON,分离推理过程和最终输出。

四、关键技巧

  • 预计算常量表:直接列出常见日薪值,绕过LLM除法弱项。
  • 多示例覆盖边界:5个示例覆盖了全勤/缺勤、熔断/正常、各类加班组合,让模型通过模式匹配而非纯推理解题。
  • 字段语义显式定义:明确写出bonus = 全勤奖 + 绩效奖金,避免模型按字面意思理解bonus只是绩效奖金。
  • 熔断条件与加班解耦:在Step5加班费处标注"无论合规与否都计算",打破模型"违规则全部清零"的惯性思维。
  • 输出模板收尾:末尾给出JSON模板骨架,锚定输出格式。