lesson-course-selection-2026-10-12.md 3.2 KB

教师预约详情按学员选择课本验收

2026-10-12,北京时间。生产应用 7pIbDBJmKx_main。

行为

教师预约详情显示该学员全部有效的已开通课程,以开课编号区分同名课本或不同分类。默认选中排课课程,老师可以切换课本或词库,查看所选课程的单元和进度,再开始或继续本节课。学生详情不显示教师选择入口。

切换课程清空原先选中的单元,取消旧单元请求,防止迟到响应覆盖新课本;标记学完写入所选开课。加载失败、空列表、无单元时给出明确反馈,缺少有效选择不能开始词汇学习。

实际学习内容与预约计薪规则分别保存:切换课本不修改原排课的课程、开课编号、工资和课时快照。学习路由、学习草稿和学习记录携带实际选择的开课编号。不同开课的学习记录分别保存,结课汇总学习词汇,抗遗忘任务关联实际词库;仍只扣一次原预约课时。

权限与发布

  • app_lesson_courses 根据预约查找所属学员,只允许实际预约老师读取。忽略客户端传入的其他学员编号;待确认、已回收、已停用的开课不作为有效选项。
  • 开始时在课时业务锁内重新核对预约版本、教师归属、所选开课归属及内容有效性。保存学习记录还验证所选单词属于该课程。
  • 本次仅发布 App 网关和 xs_lesson_complete 例程。发布前备份线上代码及例程,并确认没有正在执行的结课查询。迁移不回填历史数据、不修改预约或余额,临时部署函数已删除并回读确认。
  • 线上 migration_status 版本为 2026-10-12-lesson-course-selection-v4,包含 app_lesson_courses;线上 App 完整代码与本地打包代码一致。

验证

  • 62项移动端测试通过,包括预约交互与API读取不触发刷新循环;37项相关Node/PGlite测试通过,包括选课权限、记录隔离与幂等、多词库结课和原有预约修复。11个云函数定义校验通过,移动端生产构建成功。
  • 真实教师现有会话:熊小俊预约858326返回4门有效开课,小赵预约858566返回4门,花花预约858626返回6门;每门课程的单元接口均通过。其他老师读取熊小俊的预约课程列表返回403。
  • 熊小俊实际可选:新课标高中考纲3000词、人教版2024年9月录、人教版(PEP)三年级起2024年9月录、人教版(PEP)三年级起2022年录。
  • 生产事务回滚验证:选择另一已开通课本171后,开始逻辑在事务内到达学习中;原排课课程443、绑定、工资和课时快照保留。强制回滚后预约及学员余额与事务前完全一致,未替教师实际开始课程。
  • 本地移动端4200已启动,预约详情路径与main.js均返回200。当前浏览器会话已过期,真实登录后的浏览器手动点击尚未验收;页面切换交互通过ChromeHeadless测试,线上师生数据权限通过真实接口验证。

私有发布备份、测试日志、接口回读和事务回滚证据位于 /Users/mac/.local/state/xiaoshu/course-selection/2026-10-12/,不提交Git。夜间同步与工资结算来源完整性的验收状态未由本功能改变。