2026-10-15 12:12(北京时间)完成回读。用户明确授权查找既有凭据并发布后端;本次发布源码对应 3ce6b39,线上网关版本为 2026-10-15-teacher-earnings-v12。
xiaoshu.app.gateway、xiaoshu.ops.gateway、xiaoshu.ops.gateway.v3,实际保存代码逐一与本地生成代码核对一致。review-rewards.sql、lesson-workflow.sql、lesson-records.sql、payroll-integrity.sql 的兼容迁移。去除文件外层事务边界后,四份 SQL 在同一数据库事务内执行,设置锁等待与执行超时,持有同步/工资事务锁并检查无有效同步租约。feedbackStatus 字段、xs_review_complete_result、xs_review_reward_correct 三项均存在;Parse 的报告字段也已登记。首页统计接口现在返回实际 lessonIncome、reviewIncome、totalIncome。旧兼容字段 t_yongji 同步返回实际总额,不再按课次数乘固定单价估算。
已有本机私有凭据经线上验证有效,身份为当前帐套 super-admin。没有把凭据写入仓库或报告。发布前确认活动同步与教学/工资写入均为 0,保存三个线上网关的原始代码、Parse schema、数据库函数定义、列信息、工资规则和相关数据。
私有备份目录:/Users/mac/.local/state/xiaoshu/cloud-releases/2026-10-15-teacher-earnings-v12/,目录 0700、文件 0600。包含 functions-before.json、schemas-before.json、database-before.json、migration/scoped-before.json、最终迁移 SQL、发布回读、验证日志与截图。
最初整表备份流程遇到服务端 503,尚未运行迁移或替换正式网关。核查恢复状态和临时入口后,改用受影响数据备份:待补防重字段记录、完整报告、工资批次和明细,以及复习工资全量计数/金额/逐行摘要;与之前保存的函数定义、列信息和规则共同构成本次迁移备份。它不是全库灾备。迁移前待补防重字段记录为 0。
迁移后核对:892 条工资明细及原工资批次完全一致,156,057 条历史复习凭据的数量、金额及除新增字段外的逐行摘要一致。历史错计未自动改写。
| 验证 | 结果 |
|---|---|
| 服务端测试 | 211 项通过,0 失败 |
| 网关保存代码 | 三个网关逐字回读一致 |
| 真实老师收入 | 3 个真实老师账号均返回数值总收入,总额等于两个收入分项之和 |
| 单次收入查询时间 | 4,710 / 4,734 / 5,550 ms,仅三次抽测,不作为分位数或整体性能结论 |
| 浏览器金额显隐 | 本地生产构建接入真实生产收入查询:默认隐藏,眼睛显示的金额与实时返回一致,再点隐藏;360 / 390px 无横向溢出 |
| 线上隔离教学闭环 | 91 项通过;包含无反馈并发结课返回实际工资及待补状态、首页收入与课酬一致、首次补交反馈不重复记薪,及既有学习/报告/余额流程 |
| 清理回读 | 本次测试账号 0、临时函数 0;测试业务数据已清理,正常审计轨迹保留 |
| 最终公开版本 | 2026-10-15-teacher-earnings-v12,包含 app_review_complete |
浏览器验证中只有收入接口使用生产真实查询,其余接口隔离;它证明实际金额可显示,不代表真实微信 WebView 已验收。91 项隔离检查没有对真实客户结课、充值、扣课时或发薪。当天/逾期复习计薪与并发边界已有数据库自动测试,本次未在真实客户任务上完成复习。
私有证据:verification.json、income-readback.json、browser-income.json、smoke.log、final-check.json。最终回读时间为 2026-10-15 12:12:41(北京时间)。
优先使用备份的兼容网关及相应前端回退;不得删除收入凭据、纠正凭据、防重约束或撤销数据库当天计薪守卫。数据库新增字段和函数保留。若需要回滚,先确认当前代码未被其他发布更新,再执行并重新核对版本、收入读取及写入规则。