# WageKit 0.2 计算口径

## 范围与金额

内置规则版本 `CN-resident-2026.2`，只接受2026年；年份不会自动选择未来或历史政策。
内核金额使用Int64整数分，百分比乘法四舍五入到分。JSON边界使用Double解析但要求原始
数字为无小数/指数的整数分且不超过1e12分，均在可精确表示的整数范围。
CSV金额按十进制字符串直接转分，不经过浮点乘100。单笔金额0..1e12分；每人最多12期。

## 累计预扣与复核

累计应纳税所得额 = 累计工资 − 每月5000×任职期数 − 累计社保/专项附加/其他扣除。
累计应纳按年度累进表计算。本期预扣 = max(累计应纳 − 此前累计已扣, 0)。
模型模拟采用此前模型已扣；复核采用此前输入的实际已扣。负差不在年中退税。
收入降低不能抹掉以前已经扣过的金额。

复核输出全部输入期数、累计应纳、此前实扣累计、本期应扣、实扣、差额。
差额=实扣−应扣；绝对差额不大于显式容差则为一致。跨员工分开累计，
同一员工必须从本单位年度首期输入连续历史。遗漏历史、重复期数、跨年度输入拒绝。

## 年终奖

选档条件为 `奖金分数 <= 月表上界分数 × 12`，不先做整数除法。
税额=奖金×该档税率−该档月度速算扣除数。例如36000.00元税1080.00；
36000.01元税3390.00；36001.00元税3390.10。六档测试取边界−1/边界/边界+1分。
这些是按公开公式和本库舍入规则推导的用例，不声称是税务机关逐项出具的核定结果。

年度比较采用最终全年综合所得应纳税额的增量，不比较某月预扣增量。
只有调用方声明年度数据完整时才给比较结果；“完整”是调用方责任，本库不能自动证明。
不完整时单独计税可以试算，但不输出确定的更优方式。每年单独计税仅一次的资格由调用方核实。

## 年度汇算估算

居民年度基本减除=12×5000元，与实际有收入月份数不同。
税基 = 全年工资+已折算其他收入额+显式并入奖金−60000−月度已列扣除−年度追加扣除。
输入工资不得已包含另行并入的奖金；同一扣除不得同时计入月度和年度。
年度大病医疗走年度追加扣除；资格继续教育亦可由调用方在合适阶段提供，不能强制摊成月度。
输出应纳、预缴、退、补。工资预缴若未提供则按模型估计，明确标注modeled；
provided表示用户给定，仍不是本库核验的税务缴款凭证。其他收入的预缴单独输入。
JSON入口默认不在综合所得汇算中并入奖金。设置 `bonus_merged:true` 时，附加奖金只进入
一次税基，并须显式提供包含奖金已预扣税款的 `salary_prepaid`。同一奖金不能同时包含在
工资输入与单独bonus字段中。其他收入和对应已预扣额必须成对提供，适当时可填0。
所有JSON对象拒绝未知字段，避免把未支持的税务因素默默排除在计算之外。

## 首期税后反推

固定社保现金扣除以及税基扣除，普通首个扣缴期，无以前累计状态。
以非递减净额函数二分，取最小可行税前。默认连续累进表的分位舍入造成相同净额，
不意味着有到手金额缺失；已删除“有些金额永远取不到”的宣传。
超过支持金额的结果由JSON入口拒绝。不能把首期反推直接用于年中承诺净额。

## 规则与社保

规则对象携带两张表、每月基本减除和版本。预扣、奖金、年度汇算都有接受规则的入口。
使用自定义表前调用validate_rules，检查长度、升序、税率范围、速算扣除连续性。
`policy_impact` 是在既定计税方法下的假设参数比较，不解释或自动执行新法规。
自定义规则的所有者负责适用范围与版本记录。

旧CityParams仅演示整数百分比、共享基数；实际应用可使用Contribution逐项独立基数、
基点费率（50=0.5%）和固定费用。实际年度城市参数须外部核实。
专项扣除辅助结构不自动判断资格、家庭分摊和享受月数；非独生赡养上限可校验，
大病医疗月度字段必须为0。金额计算不构成扣除资格判定。
