README.md 4.6 KB

上课记录与抗遗忘转交验收

版本:2026-10-13-lesson-records-v10。前端在本地验证,未发布前端;配套数据库迁移和云函数已发布并回读源码校验。

入口与行为

  • 左侧「记录管理 → 上课记录」:姓名、会员 ID、授课老师、门店、课程和日期筛选,默认全部历史,北京时间倒序;按真实课次去重计数。
  • 每页 20 / 50 / 100;指定会员可查看全部;导出保持筛选条件,并检查跨页快照,变化时要求重试。
  • 会员详情复用同一列表;排课中心、会员详情和集中列表使用同一反馈详情。历史原始点评完整保留,未记录字段不猜测补写。
  • 管理员可转交本课或该学员全部已有未完成复习,包含逾期、今天、未来。预览展示数量、日期、原陪练和影响课次,必须填写原因。
  • 转交有版本校验、事务、幂等回执和逐任务审计。与复习完成使用同一任务行锁;新陪练可读取所接任务的来源词表,原陪练不能继续提交已转交任务。
  • 原授课老师、已完成任务、历史工资和后续新课默认陪练不变。新陪练完成任务按新归属计薪一次。
  • 夜间同步显式保护已转交任务;页面触发旧接口刷新也保护归属和完成状态,冲突留痕。

验证结果

检查 结果
管理后台测试 266 通过
学生/老师端测试 218 通过
服务端测试 192 通过
双前端生产构建 通过;已有样式预算/CommonJS 警告
云函数语法、动作覆盖 11 个定义有效,120 个调用动作无缺失
线上隔离账号专项 16 项通过,包含并发、越权、停用陪练、旧同步保护和工资归属
线上教学业务回归 74 项通过;隔离数据已清理
本地浏览器连接真实后端 7 项通过:跨页、全部历史、日期、导出行数、反馈、窄屏、会员入口复用
部署回读 两版运营网关、移动端网关、直接同步函数均与本次代码一致;原通用管理网关未变

专项数据库测试覆盖同课次重复来源合并、55 节历史分页、姓名与日期组合计数、完整反馈、两种转交范围、逾期任务、重复请求、旧预览失效、完成/转交竞争、停用目标和跨帐套拒绝。线上并发测试使用独立请求连接;不会转交真实学员任务来做测试。

历史核对与定向补齐

  • 截图会员 ID 1857:旧系统 4 节,新系统 4 节,逐条业务 ID 和反馈匹配。
  • 客户口述姓名在旧系统实际匹配会员 ID 1825:初查旧 51、新 50;缺少 2026-10-13 20:38 的课次 877550(预约 875450)。
  • 核实旧接口原始数据和真实师生身份,备份后进行事务回滚演练,再定向补齐 1 条学习、1 条上课、10 条已有未完成复习。
  • 对应预约为未修改的原始导入记录(创建/修改时间一致、无新教学凭据);事务锁内再次比对完整快照后同步旧状态。未重新结课或重新扣费。
  • 重跑命中审计回执,无重复新增。回读旧/新均 51 节,51 条业务 ID 和反馈全部匹配;余额、充值流水和复习工资前后相同。
  • 51 条真实历史已浏览器验证翻页、查看全部、倒序及 Excel 行数一致。

部署与证据

迁移入口:node scripts/migrate-lesson-records.mjs --apply,需要受保护环境里的主密钥和有效管理会话;迁移只建结构/函数,不自动转交现有任务。数据库迁移完成后发布两版运营网关、移动端网关和直接同步函数。

备份、部署校验、隔离验收结果、定向补齐前后数据和包含真实资料的截图/Excel 保存在本机受保护的 /Users/mac/.local/state/xiaoshu/cloud-releases/2026-10-13-lesson-records-v10/,不提交真实反馈、会话令牌或密钥。

独立存在的同步阻塞

Mac 23:00 LaunchAgent 已恢复并确认在调度。今晚全量同步因 legacy_account_identity_conflict 安全中止;本次定向补齐不能代表全量同步成功,未伪造检查点或完成状态。账号身份冲突仍需单独核对处理。

陪练选择交互补充

目标陪练改为白底、绿色高亮的页面内搜索列表,支持姓名片段和编号匹配、方向键/回车选择、Escape 收起及无匹配提示;范围改为单选项。修改搜索会清空旧目标与预览,未从结果中选定不能转交。后台测试 268 项通过,生产构建通过;真实后台浏览器检查搜索、键盘、空结果、白底样式与原有查询/导出流程通过。未提交真实转交,无后端变更。含真实姓名的截图保留在本机私有验收目录。