底座 P2 已上线 L0

工资条生成

按人生成工资条,个人金额默认掩码成星号,同名多行自动合并并提示,关脱敏会报警

技能 slugsalary-slip-gen
所属栏目底座 计算工具 / 归档 / 合规
交付阶段P2 P2 长尾 · 长尾与进阶分析,按 P0/P1 数据裁剪
版权© 2026 律令科技(深圳)有限公司开发 · 财友云(caiyouyun.cn)发布
这个包已上线。复制到本地即可离线运行;正文与用法以下方随包 SKILL.md 为准。

技能正文(随包 SKILL.md)

> **本地运行,零网络、免 API Key、数据不出电脑。**
> 四项诚实承诺:① 算不出就说算不出,绝不编造数字;② 高危动作强制人工确认;③ 幂等断点,绝不重复副作用;④ 全程留痕可审计。

# 工资条拆分生成

工资条是要发给员工本人看的。它能同时把「这个人这个月挣了多少」和「公司还有多少人在同一批里」
暴露出去——一次群发,全办公室的工资都透明了。

本包的原则是:**默认脱敏**。个人金额一律掩码成 `****`,身份证只留前 4 后 2,
银行卡只留后 4 位。要明文必须显式加 `--no-mask`,而且脚本会大喊三声警告。

## 做什么

- 按「姓名」分组,**一个人一张工资条**
- 明细项从表头自动识别(所有数值列都是明细项:应发、各项补贴、社保、公积金、个税、实发……)
- 文本列(部门 / 工号 / 岗位)作为抬头信息,原样带出
- 同名多行 → **自动合并,并明确提示**合并了几行、来自哪些行
- 身份证 / 银行卡默认掩码

## 输入 / 输出

输入:1 个工资表(`.xlsx` / `.csv`),首行表头。`payroll-calc` 输出的 `pr_主表.csv` 可直接吃。

| 列 | 必需 | 别名 |
|---|---|---|
| 姓名 | 必需 | 姓名 / 员工姓名 / 员工 / 人员 / 职工姓名 |
| 实发工资 | 必需 | 实发工资 / 实发 / 实发金额 / 发放金额 / 实发合计 |
| 其他数值列 | 可选 | 自动识别为工资条明细项 |
| 身份证号 / 银行卡号 | 可选 | 默认脱敏,也可 `--no-mask` 一并关闭 |

输出(进 `_out/`,源文件一个字节都不动):

| 文件 | 内容 |
|---|---|
| `sl_主表.csv` | 每人一行:姓名 + 抬头 + 明细项(脱敏后)+ 脱敏口径 + 工资条行数 + 备注 |
| `sl_工资条明细.csv` | 长表:姓名 / 序号 / 项目 / 金额 / 是否脱敏 / 备注 |
| `sl_异常表.csv` | 实发缺失、实发为负、明细项缺失(带风险等级) |
| `sl_校验表.csv` | 人数、脱敏口径、合并情况、人工复核声明 |
| `fin-log.jsonl` | 处理日志(追加) |

## 用法

```bash
PY="<python 3.8+ 路径>"   # 纯标准库,无需 pip install
"$PY" <skill目录>/scripts/slip.py 工资表.xlsx --execute
```

生成明文工资条(**谨慎**,会打印警告):

```bash
"$PY" slip.py 工资表.xlsx --no-mask --execute
```

指定列名:

```bash
"$PY" slip.py 工资表.csv --name-col 员工姓名 --execute
```

**默认不写盘**——不加 `--execute` 只打印预览,确认无误再落盘。

## 真实输出

默认脱敏(5 人):

```
方案:sl_工资表.xlsx(5 行 / 5 人;姓名列「姓名」,实发列「实发工资」)
      脱敏:默认开启,个人金额掩码为 ****

--- 工资条(前 10 张)---
  张伟        明细  8 项  默认脱敏(个人金额掩码为 ****)
  李娜        明细  8 项  默认脱敏(个人金额掩码为 ****)
  王强        明细  8 项  默认脱敏(个人金额掩码为 ****)
  赵敏        明细  8 项  默认脱敏(个人金额掩码为 ****)
  陈涛        明细  8 项  默认脱敏(个人金额掩码为 ****)

--- 异常表:本次未发现异常记录(0 条)---

已生成工资条明细:sl_工资条明细.csv(35 行)
```

`sl_工资条明细.csv` 前几行:

```csv
姓名,序号,项目,金额,是否脱敏,备注
张伟,1,基本工资,****,是,
张伟,2,绩效工资,****,是,
张伟,3,补贴,****,是,
张伟,4,应发工资,****,是,
张伟,5,社保个人,****,是,
张伟,6,公积金个人,****,是,
张伟,7,估算个税,****,是,
```

关闭脱敏(醒目警告):

```
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! 已关闭脱敏,工资条含明文金额,请按 confidential 处理
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
方案:sl_工资表.xlsx(5 行 / 5 人;姓名列「姓名」,实发列「实发工资」)
      脱敏:已关闭脱敏,工资条含明文金额,请按 confidential 处理
...
张伟,研发部,15000.0,4000.0,500.0,19500.0,1800.0,1560.0,904.0,已关闭脱敏(明文),1,
```

同名多行合并:

```
提示:检测到同名多行,已合并为一张工资条 —— 张伟
      合并规则:金额列逐项相加,抬头信息取第一行;合并了几行、哪些行,见「工资条行数」「备注」两列。
方案:sl_工资表_重人多.xlsx(3 行 / 2 人;姓名列「姓名」,实发列「实发工资」)
      脱敏:默认开启,个人金额掩码为 ****

--- 工资条(前 10 张)---
  张伟        明细  4 项  默认脱敏(个人金额掩码为 ****)
  李娜        明细  4 项  默认脱敏(个人金额掩码为 ****)
```

失败路径:

```
$ slip.py sl_工资表_坏.xlsx --execute
--- 异常表(3 条)---
  [李娜    ] 实发工资缺失或不是数字,工资条不可生成
  [王强    ] 实发工资为负(-400.00),发工资前请先查扣款
  [赵敏    ] 明细项「社保个人」缺失或不是数字,工资条上留空不填 0

$ slip.py sl_坏表_缺实发列.xlsx --execute
【算不出】「sl_坏表_缺实发列.xlsx」里找不到实发工资列
建议:工资条必须知道实发多少;可用别名:实发工资、实发、实发金额、应发实发、发放金额、实发合计
本包不会给一个看似合理的替代数字 —— 财税场景算错比不做更危险。
```

## 拒绝权(什么情况下不给数)

| 情况 | 处理 |
|---|---|
| 缺姓名列 / 缺实发工资列 | 拒绝(RC=2),列出别名 |
| 文件不存在 / 空表 / 只有表头 | 拒绝(RC=2) |
| 某人的实发工资缺失或不是数字 | 该人进异常表(高),不生成其工资条,不填 0 |
| 实发工资为负 | 该人进异常表(高),仍出条但备注提醒 |
| 明细项缺失 / 为负 | 该明细在条上留「—」并进异常表(中),不填 0 |
| 同一人多行 | **不拒绝**,合并并提示(本包的设计选择,合并规则写在备注列) |

## 关键设计(容易踩的坑)

1. **脱敏默认开,不脱敏要显式说**。`--no-mask` 是唯一的关闭方式,
   而且脚本在开头和结尾各打一次横幅警告,避免「忘了自己关过」。
2. **掩码是 `****` 而不是删掉**。保留列结构和列数,方便下游程序继续吃这个表。
   真正的密文(加密)本包不做——加密属于密钥管理范畴,不是这个文件该管的。
3. **同名多行必须合并而不是丢弃**。工资表里一个人两行通常是「发两次」或「拆分发放」,
   合并规则是**金额相加、抬头取第一行**,合并了几行写在「工资条行数」列。
   **合并是有损的**:如果两行的明细项口径不同(比如一次是正发、一次是补发),
   合并后的数字请人工看一眼「备注」列。
4. **工资条没有审批流**。本包只出文件,不发送、不上传、不推送到任何地方——
   发出去的是谁的责任,本包不替您承担。
5. **文本列原样带出**。部门、岗位这些不算「个人金额」,本包不掩码;
   如果您认为它们也算敏感信息,请在发出去之前自己处理。

## 人工复核(必读)

- 脱敏后的工资条只能给本人看,转发出去别说是本包的责任
- 合并同名多行的金额前,先确认这两行是不是同一笔工资的两个部分
- 「估算个税」是月度税率表估算值,**按累计预扣法实际个税以申报为准**,别拿它当扣款依据跟员工对账
- 明细项缺失的位置在条上是「—」,不是 0;员工问起来要能解释
- 工资条里的姓名写法要和劳动合同一致,否则员工不认

## 相邻路线转交

| 用户要做的事 | 转交给 |
|---|---|
| 算工资表(应发 / 个税 / 实发) | `payroll-calc` |
| 工资表 / 社保表 / 个税表核对 | `payroll-three-check` |
| 批量生成加密工资条 / 加密压缩包 | `fin-data-mask` |
| 工资计提凭证 | `voucher-batch-generate` |
| 个税申报表 | `tax-form-fill` |

## 可直接复制的说法

```text
按人把工资条拆出来,个人金额默认打码成星号,身份证和银行卡也一起打码。
如果我要明文,我会显式加 --no-mask,你再打印那句「已关闭脱敏,工资条含明文金额,请按 confidential 处理」。
同一个人在表里有多行的,合并成一张并提示合并了几行、来自哪几行。
某个人实发缺失或者为负,进异常表,别给我填 0。
输出只放到 _out/,源文件不许动。
```

## 做完怎么算完成

- [ ] 「脱敏口径」列确认是「默认脱敏」还是「已关闭脱敏(明文)」
- [ ] 用了 `--no-mask` 的话,输出目录已被按 confidential 处理(限定可见范围、别外发)
- [ ] 同名合并的每一行都点名确认过(合并了几行、来自哪些行)
- [ ] 异常表里「实发为负」「明细缺失」已逐条追查
- [ ] 工资条明细项与本公司工资条模板一致(项目不漏)

---

本 Skill 采用 BUSL-1.1 许可(源码可见,可自由使用)。

版权所有 © 2026 律令科技(深圳)有限公司(@lexord-technology)。
本技能由律令科技(深圳)有限公司开发,**财友云(caiyouyun.cn)**发布与展示。

允许个人及企业内部免费使用、复制、修改,包括内部生产环境。
未经书面许可,不得将本 Skill 或其修改版作为商业服务对外销售、转售或提供托管服务。
各版本发布之日起 4 年后自动转为 Apache License 2.0。详见随包 `LICENSE.md`。

相邻技能

底座 规划中P0 计划 已上线

税费计算

增值税/附加/个税/印花税/所得税预缴,附公式与政策依据

L1 · 计算工具 / 归档 / 合规
底座 规划中P0 计划 已上线

财税数值工具

金额大写、含税不含税互算、价税分离、尾差分摊、百分比反算

L0 · 计算工具 / 归档 / 合规
底座 规划中P1 在建 已上线

工资表计算

五险一金 + 个税累计预扣预缴 + 实发,支持多地参数表

L1 · 计算工具 / 归档 / 合规
底座 规划中P1 在建 已上线

固定资产折旧

直线/双倍余额/年数总和/工作量法,生成折旧明细表

L1 · 计算工具 / 归档 / 合规
底座 规划中P1 在建 已上线

会计期间工具

期间生成、周旬季年切换、工作日调整、账期与自然日换算

L0 · 计算工具 / 归档 / 合规
底座 规划中P1 在建 已上线

会计档案归档

按年度-凭证号-附件组织,生成目录清单与完整性校验

L0 · 计算工具 / 归档 / 合规
底座 规划中P2 长尾 已上线

摊销计算

无形资产与长期待摊费用摊销明细表

L0 · 计算工具 / 归档 / 合规
底座 规划中P2 长尾 已上线

固定资产卡片台账

新增/折旧/处置/盘点全生命周期台账

L0 · 计算工具 / 归档 / 合规
底座 规划中P2 长尾 已上线

贷款还款计划

等额本息/等额本金/气球贷,含实际利率与 IRR 校验

L0 · 计算工具 / 归档 / 合规
底座 规划中P2 长尾 已上线

外币折算与汇兑损益

多币种折算、期末汇兑损益计算,汇率走内置表或导入

L1 · 计算工具 / 归档 / 合规
底座 规划中P2 长尾 已上线

操作留痕查询

合并查询所有财税技能的运行日志,按时间/技能/级别过滤

L0 · 计算工具 / 归档 / 合规
底座 规划中P2 长尾 已上线

财务敏感信息扫描

银行卡/身份证/税号/账套口令扫描与脱敏报告

L0 · 计算工具 / 归档 / 合规
本页内容由本地构建生成于 2026-09-27。技能正文以随包 SKILL.md 为准。