review-reconciliation-2026-10-20.md 3.5 KB

2026-10-20 历史抗遗忘工资核定

用户要求尽量核定可确定的历史记录,沿用 30 分钟 0.5 元、60 分钟 1 元,学生自习和逾期补做不计薪,同一复习不重复计薪的规则。

已执行

核查 2026-09-01 起的待核对凭据,以及月份缺失的异常凭据。发现 5,372 条待核对:9 月历史 4,510 条、重复异常 9 条;10 月历史 783 条、重复异常 69 条;日期和来源缺失 1 条。

  • 9 条历史凭据的完成日期晚于计划日期,确定不计薪。
  • 78 条重复异常涉及 48 组来源相同的任务,师生归属一致。优先保留已经计薪的凭据,其次已有历史凭据,最后保留最早完成的一份;65 条重复副本确定不重复计薪。另 13 组只有重复副本完成,保留一份待核定,不能把唯一实际完成记录也排除。
  • 合计 74 条已在生产核定为不计薪,原始 6,663 条范围内凭据、现有 PayrollBatch 和 PayrollLine 回读完全一致。
  • 10 月页面:有效计薪 1,286 条、¥1,196.50;历史待核对 783 条;异常待核对从 70 降至 14(13 份保留的完成凭据和 1 条日期来源缺失记录)。

仍需明确的历史身份口径

旧系统完成操作只更新完成状态和时间,未保存实际完成账号;录入人是创建者,不能当作完成者。5,284 条按时完成历史记录和 13 份保留的重复组完成记录不能凭绑定老师直接断言“老师账号操作”。用户先前要求“身份不明的保留待核对”。已询问是否对这批历史记录采用“来源、日期、时长核实后按绑定老师计薪,有明确学生自习证据则剔除”的历史核算口径,尚未收到答复,因此本次没有新增这部分工资。

4 节本地缺失的来源课已通过旧系统 content_get 核实,关联的 20 条复习可确定课时时长。完整来源快照仅保存在受限的本地审计目录。假如历史身份口径获得确认,候选共 5,297 条,另查出其中 76 条涉及系统标记为身份冲突的老师账号,须单独解决身份归属;其余 5,221 条按来源时长试算为 ¥4,764.50,仍须执行服务端逐条验证。以上金额均尚未入账。

实现及验证

ReviewRewardResolution 追加核定依据,不改写原始凭据、历史完成账号或已存在工资单。ReviewRewardIncome 投影核定后的状态和金额。核定事务要求管理身份、明确凭据列表及原因,对来源、师生、完成日期、重复关系和已有结算进行复核。历史绑定老师口径必须显式启用,并记录实际完成身份未留存,不伪造老师操作证据。

重复副本必须指向同一师生、同一来源学习记录、同一计划日期的保留凭据。已经核定计薪的任务即使原始重复任务再次完成,也不能重复记工资。

数据库规则 10 项、回归 47 项、移动端 43 项、管理端 6 项测试通过,双端生产构建及 11 个云函数定义校验通过;双端显示分别区分学生自习、逾期和重复不计薪。生产迁移和批处理前检查同步租约空闲,保存快照,事务执行,随后比对原始凭据和工资单。三个网关仅选择性替换 reviewRewardPage,保留线上其余差异并逐个回读代码哈希。

私有审计目录:/Users/mac/.local/state/xiaoshu/cloud-releases/2026-10-20-review-reconciliation/。内含执行前后快照、74 条核定清单、旧课次来源证据和未执行的历史核定候选清单;不提交账号数据和生产明细。