工资数据审核系统,基于确定性规则引擎 + Python 脚本执行。 Use when user asks to 工资数据审核、薪资校验、算薪逻辑验证、薪酬合规检查、 工资单审核、月度薪资校验、发薪前数据检查、payroll audit、salary check、 wage verification、payroll...
---
name: payroll-data-audit
version: 5.0.1
description: 工资数据审核系统,基于确定性规则引擎 + Python 脚本执行。
Use when user asks to 工资数据审核、薪资校验、算薪逻辑验证、薪酬合规检查、
工资单审核、月度薪资校验、发薪前数据检查、payroll audit、salary check、
wage verification、payroll compliance.
不适用于非薪酬类数据审核、纯算薪操作(非审核)、外部薪酬调研、个税/社保计算.
此技能需手动触发.
---
# Payroll Data Audit v5.0.0
**架构原则**:确定性操作下沉到代码,模糊推理留给 LLM。AI 不做计算和判断,只做路由决策和报告翻译。
## 概述
工资数据审核系统,全量对齐《工资审核标准流程 SOP》6 步流程,对飞书/SAP/ADP 导出的工资表执行自动化合规校验。SOP 覆盖率 95%(41/43 项)。
### 功能范围
- 字段完整性检查(30+ 列名容错映射)
- 姓名/工号重复检测
- 公式校验(Decimal 精度,0.01 容差)
- 红线校验(实发≤0、加班超36h、低于最低工资、社保未缴)
- 黄线校验(绩效异常、出勤超限、工资波动)
- 蓝线校验(跨月趋势,仅提示)
- 政策校验(实习生豁免、离职当月社保、道旅国际社保/公积金豁免)
- 人数对比分析(新入职/离职/波动>5%)
- 总额环比分析(12项计薪科目,±10%阈值自动标记)
- 分主体/部门对比(按公司主体分组环比)
- 按人深入分析(连续在职筛选+排除逻辑+六类变化分类+核实标记)
- HTML/Markdown 审核报告生成
**不覆盖**:实际算薪操作、薪酬市场调研、个税计算、社保核算。
## 使用
### 决策路由
先判断用户需求属于哪类场景,再执行对应流程:
| 用户说的 | 匹配场景 | 执行 |
|---------|---------|------|
| "帮我审核本月工资数据" | 完整审核 (Step 1→6) | `run_full_audit` |
| "快速看看有没有问题" | 红线校验 | `--step red_lines` |
| "发薪前帮我理一下数据" | 字段检查 | `--step fields` |
| "帮我验一下公式对不对" | 公式校验 | `--step formulas` |
| "帮我出个审核报告" | 报告生成 | `generate_report.py` |
### 场景一:完整审核(Step 1 → 6)
**第一步:获取数据** — 要求用户提供本月工资数据文件(CSV/Excel),可选上月数据用于跨月对比。
**第二步:执行审核**
```bash
python3 -m scripts.rules_engine \
--data <本月工资数据.csv> \
--prev <上月工资数据.csv> \
--output /tmp/audit_result.json
```
**第三步:确认门** — 如果 `summary.blocked == true`(触发红线),**不要生成报告**,先输出红线清单并要求用户确认数据修正后再继续。
**第四步:生成报告** — 通过红线后,用脚本输出 JSON 生成人类可读报告:
```bash
python3 scripts/generate_report.py \
--input /tmp/audit_result.json \
--format both
```
**输出文件**:`report.html` + `report.md` 在工作目录。
### 场景二:快速红线校验
```bash
python3 -m scripts.rules_engine \
--data <工资数据.csv> \
--step red_lines \
--output /tmp/red_lines_result.json
```
适用于发薪前快速检查,只需 10 秒。
### 场景三:数据梳理(字段检查)
```bash
python3 -m scripts.rules_engine \
--data <工资数据.csv> \
--step fields \
--output /tmp/fields_result.json
```
检查必填字段是否缺失、格式是否正确。
### 场景四:公式校验
```bash
python3 -m scripts.rules_engine \
--data <工资数据.csv> \
--step formulas \
--output /tmp/formulas_result.json
```
验证应发/实发计算是否与公式一致。
### 场景五:报告生成
```bash
# HTML 可视化报告
python3 scripts/generate_report.py \
--input /tmp/audit_result.json --format html --output report.html
# Markdown 报告
python3 scripts/generate_report.py \
--input /tmp/audit_result.json --format markdown --output report.md
# 两者都生成
python3 scripts/generate_report.py \
--input /tmp/audit_result.json --format both
```
## 补充说明
### 数据来源
- **优先**:飞书多维表格导出 CSV / SAP HCM 导出 Excel / ADP 导出
- **降级**:要求用户提供 CSV/Excel 文件
- **兜底**:无任何数据源时拒绝执行,回复:"请提供工资数据文件(CSV 或 Excel 格式),我才能进行审核。"
### 列名容错
脚本内置 `COLUMN_ALIAS` 字典,自动映射 30+ 种常见列名变体。
如果列名无法识别,脚本返回 `{"error": "Missing column: XXX"}`,LLM 必须原文转述。
### 精度处理
金额计算使用 `decimal.Decimal`,避免浮点误差累积。公式校验容差 0.01(1 分钱)。
### 规则更新
所有规则集中在 `references/rules.json`。修改规则只需编辑此文件,无需修改脚本。
**为什么这样设计**:业务规则变化频繁(如最低工资调整),集中管理避免每次都要改代码。
### 红线阻断
红线触发 → 立即阻断,不继续后续步骤,不生成报告。
**为什么**:红线代表严重违规(如负实发、低于最低工资),必须先修正数据再审核,否则报告无意义。
### 常见错误场景
| 场景 | 处理 |
|------|------|
| 数据源字段缺失 | 列出缺失字段清单,要求用户补充后重试 |
| 日期格式混乱 | 脚本自动尝试多种格式解析,失败则返回错误 |
| 无上月数据 | 跨月对比/按人分析跳过,在报告中标注"无基准数据" |
| Python 环境无 pandas | 提示用户 `pip install pandas numpy openpyxl` |
| 红线触发 | 立即阻断,输出红线清单,要求用户修正后重跑 |
### 依赖安装
```bash
pip install pandas numpy openpyxl pytest
```
### 测试
```bash
cd payroll-data-audit
python3 -m pytest scripts/tests/ -v
```
56 个测试全部通过。CI/CD 自动运行:push/PR 时触发 pytest + coverage(80% 门槛)+ lint。
### 踩坑记录
- **fillna(None) 不兼容新版 pandas** → 所有 fillna 统一用 `fillna(0)`
- **df[mask] 索引不对齐** → mask 创建时必须用 `pd.Series(..., index=df.index)` 确保索引一致
- **空数据阻塞流程** → `run_full_audit` 开头增加空数据快速返回
- **YL-005 规则字段名不匹配** → 使用 `实际计薪出勤天数 > 应计薪出勤天数` 而非 `班天数合计`
- **RL-004 字段缺失时仍触发** → 字段不存在时跳过,不报误判
don't have the plugin yet? install it then click "run inline in claude" again.