# Changelog

## 0.3.1 — 2026-10-31

- 修复：稿酬所得汇算收入额按法定 30% 减征折算（80% × 70% = 56%），此前对劳务、稿酬、特许权使用费统一按 80% 计算，导致稿酬部分的年度应纳税所得额虚高。
- 修复：工资复核CSV中字段全部为空的数据行不再被当作空行静默丢弃（此前会少对一个人的账且报告仍显示一致）；报错行号与编辑器中的物理行一致。
- 复核CLI：失败信息改走 stderr、退出码 2；`--tolerance` 缺参数值、`dist` 未构建时的报错不再与"存在差异"（退出码 1）混淆。
- 计算JSON新增 `unit:"cents"`、顶层 `warnings[]` 与 `settlement.includes_bonus`；`bonus_merged:false` 且 `salary_prepaid` 含奖金已预扣税时给出范围警告（该场景此前会使退税虚增一笔奖金税）。
- 税后反推入口增加输入范围与规则集校验，极端目标金额不再可能使整数溢出产生荒谬结果。

## 0.3.0 — 2026-10-29

- JSON及复核CSV不再静默忽略未识别字段；其他收入及其预缴额须成对提供。
- 支持明确选择将单独输入的奖金并入年度汇算，并要求提供含奖金的工资已预扣总额。
- 工资复核CSV支持规范中文表头；中英文表头映射冲突会被拒绝。
- 增加三组税务机关公开历史示例的2026规则复算、来源与假设说明。
- 加强公共接口消费示例，实际运行差异复核与奖金比较。

输入验证更严格；之前带有未知字段或省略其他收入预缴额的JSON/CSV需修改后使用。

## 0.2.1 — 2026-10-29

- 随标准库编译产物补齐Apache-2.0许可证和NOTICE，构建脚本自动复制分发文件。
- 计算逻辑与0.2.0相同。

## 0.2.0 — 2026-10-29

- 修正收入下降后累计已预扣额被覆盖的问题。
- 年终奖按精确边界选档，修正旧版“第12分才跨档”的错误。
- 居民年度基本减除固定12个月；奖金比较使用全年最终税负。
- 年度数据完整性须显式声明；区分提供的预缴额与模型估计。
- 奖金与汇算支持规则对象；增加表结构和连续性校验。
- 增加真实预扣历史复核、CSV CLI、稳定差异证据、容差及退出码。
- 增加分险种基点费率，分离大病医疗年度扣除。
- 只接受内置规则支持的2026年；CSV十进制精确转换。
- 重写Decimal对照算法；增加回归测试、文档和演示。

0.1.0存在以上已知计算错误，不应继续据其结果作正式工资或汇算判断。
