2026-10-11。源代码实现完成;用户最后要求只在本地运行,不部署线上。本文件不代表三端真实账号验收完成。
npm run start:mobile # http://localhost:4200/pages/home/shop
npm run start:admin # http://localhost:4300/admin/schedule
两端开发服务和 main.js 已 HTTP 验证成功。开发代理仍连接现有云后台,不是隔离后端。当前线上缺少新结课/评价接口;本地新详情会提示服务尚未更新并保持只读。不要把本地前端启动视为新业务闭环的线上验收。
| 检查 | 结果与边界 |
|---|---|
| 移动端 ChromeHeadless | 169 项通过,含路由、开课错误、写作分类、详情只读、结课和评价页面测试;接口为测试替身 |
| 管理端相关测试 | 41 项通过,覆盖排课页面和服务调用 |
| 开课、课时、教学与新流程 Node 测试 | 41 项通过;新事务测试使用 PGlite 和真实网关函数代码,非生产 PostgreSQL 多连接验收 |
| 工资回归 | 20 项通过,保留计价快照、跨批次防重、审计与锁单规则 |
| 云函数语法 | 11 个定义校验通过 |
| 生产构建 | 师生端、管理端通过;保留现有样式预算和 CommonJS 警告 |
| 本地 HTTP | 两个课表入口与主脚本均为 200 |
| 线上能力检查 | 新接口 app_lesson_complete、app_lesson_review 尚未发布;app:actions:audit 因这两项缺失返回失败 |
| 钱老师实际样例 | 尚未拿到账号对应的预约/接口响应,不能认定现场根因;未修改真实课程 |
| 三端真实浏览器/手机 | 尚未验收;浏览器控制连接超时,自动测试不替代手机体验 |
数据库专项覆盖:失败注入后报告/扣费/状态整体回滚、重复完成/评价、越权、过期版本、取消、同日提前开课、非当天阻止、跨午夜恢复、旧凭据复用与拒绝补扣、旧接口拒绝回退、超过一页的列表、后台凭据查询及新库版本变化。
node scripts/audit-lesson-chain.mjs,先返回候选编号,再配置 XIAOSHU_AUDIT_TEACHER_ID 精确检查。配置 XIAOSHU_AUDIT_TEACHER_SESSION 可核对本人列表及详情。脚本需要环境中的 XIAOSHU_MASTER_KEY,不创建临时用户、不改课时。业务输出不要提交 Git。npm run lessons:migrate -- --apply 注册兼容字段、安装事务和回退保护;脚本无历史数据回填。2026-10-11-lesson-workflow-v2,再发布管理端和师生端;执行 npm run app:actions:audit。npm run lessons:smoke:创建隔离账号、排当天课程、保存真实词库学习成果、并发结课、评价、后台对账、清理测试资源。该脚本会写入隔离业务数据,不是只读探测。清理失败时保留受限 fixture 文件,禁止删除真实业务记录来补救。复跑本地检查:npm run test:lesson-workflow、npm run test:member-enrollment、npm run test:payroll-integrity、npm run test:mobile:ci、npm run cloud:validate、npm run build。
在已登录的本地教师端复现:当天 14:00、16:00、21:00 的课都被按计划结束时刻标成“计划未完成”;详情能打开,但旧接口缺少 allowedActions 时,前端把原有开课动作一并禁用了。
start/continue:未开始课程限预约当天,已开始课程允许跨午夜继续。开课仍通过原接口再次校验,不能从缓存推导写权限;新接口明确返回的权限不被覆盖。