代码基线:7bb38260e49e21dec0f466e4de713f868aa7b365。目标网关版本:2026-10-15-teacher-earnings-v12。本轮完成源码与本地验收,尚未部署生产,也未修改任何线上历史工资。
| 检查 | 结果及限制 |
|---|---|
| Node / 数据库回归 | 211 项通过;真实 PostgreSQL DDL、触发器、约束与事务在 PGlite 执行 |
| 移动端 ChromeHeadless | 228 项通过,含未反馈结课、防重复提交、完整今日列表和按登录/日期缓存 |
| 管理端 ChromeHeadless | 271 项通过,含纠正权限、理由和承接草稿版本检查 |
| 双端生产构建 | 通过;存在原有 SCSS budget 与 CommonJS 警告 |
| cloud:validate | 11 个函数校验通过 |
| 本地动作覆盖检查 | 122 个使用动作检查,missing 为空 |
| 浏览器页面 | 本地生产构建+隔离接口数据:当天/逾期完成、金额、首页缓存复用、手动刷新错误态、导航通过;360px/390px 截图已人工查看,姓名和工资不互相挤压 |
| 组合迁移 | 一笔事务安装,连续执行两次通过,原完课和反馈记录保留 |
复现:npm run test:server、npm run test:mobile:ci、npm run test:admin:ci、npm run build、npm run cloud:validate、npm run app:actions:audit:local。浏览器验收:npm run teacher-earnings:browser,截图/结果写入忽略目录 tmp/teacher-earnings-qa/,不会连接线上账号。
PGlite 单连接的并发调用会排队,不能证明生产 PostgreSQL 多连接并发性能。浏览器模拟数据不能证明线上账号、手机浏览器或微信 WebView 已通过。
以下为最初 4 条预览版本的查询阶段测量,不代表后来“全部今日任务+当天缓存”版本的首载性能;后者首载请求量随当天任务数变化。
固定 10,000 条任务,40 条今天任务,原始与修改后 appReviewPage 使用同一 PGlite 数据库和现有索引。先各预热 4 次,再按 AB/BA 交替各测 20 次,不注入网络延迟。原始首页请求 pending/20 条,修改后请求 today/4 条并省略日历和学员元数据。
| 测量 | 原版 | 修改后 |
|---|---|---|
| p50 | 120.66 ms | 34.90 ms |
| p75 | 124.43 ms | 35.90 ms |
| p95 | 134.27 ms | 36.39 ms |
| 页面数据 SQL 数 | 6 | 3 |
| 序列化响应 | 28,665 bytes | 2,046 bytes |
| 首页结果中的今日任务 | 0 | 4 |
| 错误率 | 0/20 | 0/20 |
p75 查询阶段下降约 71%。这是本地 SQL 和序列化测量,排除了真实网络、版本查询和浏览器渲染,不等于五条真实路径已经达成 50% 提速。最初缺少索引的探测中,新查询反而更慢,因此保留索引核验作为发布检查;没有据此盲目添加生产索引。原始采样见 perf/teacher-review-2026-10-15.json。
复现:准备基线提交的 scripts/cloud/mobile-teaching.js,执行 npm run teacher-earnings:benchmark -- --baseline=/绝对路径/mobile-teaching.js。线上须核查现有 CommonModel/company/model/item、CommonModel/company/model/general、DailyStudyRecord/company/id、MemoryPracticeRecord/company/user/time 与 coach/status 索引和实际执行计划。
以下仍待同一隔离账号、设备、网络下交替各测至少 10 次,报告 p50/p75/p95、请求数、响应体积及错误率:
仍需关注:累计课酬读取规范化工资来源及历史规则,特定学员复习仍可能等待旧数据同步;本轮未将旧同步改成无监控的后台任务,也未宣称这两条路径已提速。
2026-10-15 11:43 北京时间只读检查公开 migration_status:HTTP 200,现网仍为 2026-10-14-member-credit-v11,尚无 app_review_complete。只检查版本,不触碰账号或业务数据。
本轮环境检查:未提供 XIAOSHU_SESSION_TOKEN 或 XIAOSHU_MASTER_KEY。因此没有核对录音中的钱老师账号、10 月 13 日课程与真实错计名单,不能把测试数据当作业务清单。
在已授权环境设置现有管理员会话(不要把凭据写进文档或终端参数),使用明确老师编号和年份范围:
npm run teacher-earnings:audit -- --check
npm run teacher-earnings:audit -- --coach-id=实际编号 --from=YYYY-MM-DD --to=YYYY-MM-DD --output=/私有路径/核对目录
工具只读查询,输出课程/学习批次/保存计划/既定周期/任务归属/错计凭据及工资单状态。按实际结课日核对 1、2、3、5、7、9、11、14、17、21 天;缺少完成日或索引时列出限制。无适用学习内容的课不要求生成单词复习任务。历史手工转交必须结合转交审计解释,不能直接按当前预约老师覆盖。错计接口要求 beijing-day-v1 标记,旧网关不会被误当作完整清单。
先核对唯一老师身份和年份,再运行;输出私有 JSON,不进入 Git。清单完成后逐笔确认,不自动批量冲销、不自动发放。
发布需确认本次提交版本,按计划另行执行。本轮没有运行以下写入步骤。
npm run teacher-earnings:migrate 只输出 SQL 哈希,不执行;审核哈希后使用 --apply --backup-dir=/私有绝对路径。脚本验证身份和活动同步任务,先保存一致性表数据、函数及列定义,再将四份兼容 SQL 作为单事务执行;失败回滚,成功回读函数和字段。临时函数限定操作者、15 分钟过期且 finally 清理。不要复用同一个备份目录覆盖上次备份。xiaoshu.app.gateway、xiaoshu.ops.gateway、xiaoshu.ops.gateway.v3,再发布本次移动端与管理端构建;确认 migration_status 为目标版本。保留线上原始文件备份。回滚优先退回前端文件,必要时回退后端展示逻辑;数据库新增账本、调整凭据、防重约束、当天资格规则和已发生的真实账务必须保留。不得删除凭据、改回金额或恢复可绕过资格判断的完成函数。历史纠正不通过删行撤回;如纠正依据有误,另行审核财务调整。新旧客户端仍使用同一数据库守卫。