lesson-feedback-entry-2026-10-15.md 2.9 KB

历史已结课课程补反馈入口修复(2026-10-15)

问题和结果

销课列表把没有 LessonCompletionReport 的历史课程标为反馈待补,但 lessonOrderCapabilities 只有在报告已存在时才返回 editFeedback。详情页也要求存在报告对象才能打开编辑器,数据库更新函数则要求恰好一份报告,导致历史课程没有补交路径。

  • 已结课(30/40)、未取消的本课老师获得补交/修改反馈权限。
  • 学习报告“完课反馈”右侧显示“补充反馈”;已提交时显示“修改报告”。未提交状态明确标为老师反馈待补。
  • 历史无报告时,编辑器使用已验证课程详情的预约版本;已有报告沿用报告版本。
  • 首次提交在反馈事务中核对身份、老师归属、课程状态、预约版本及唯一上课记录归属,创建一份报告并保存反馈;不重跑结课、扣课时、课酬或复习任务生成。
  • 旧记录中无法确认的报告快照字段留空,不用当前时间伪造历史上下课时间;学习统计仍读原学习记录和复习任务。
  • 保留请求幂等、并发序列化、旧版本拒绝和事务回滚。学生仍通过课程详情提交独立评价。

验证

  • npm run test:lesson-workflow:16/16 通过。新增历史无报告首次补交、同请求并发重试、不同请求旧版本拒绝、越权拒绝、失败回滚;核对课时凭据、学习记录、复习任务、评价、工资快照未改变。
  • npm run build:mobile:通过;现有样式预算/CommonJS 警告。
  • npm run cloud:validate:11 个函数定义通过。
  • node scripts/check-lesson-feedback-browser.mjs:通过。390px 浏览器验证报告入口、自动打开表单、失败保留输入、重试保存、已提交报告展示、pending 报告入口及学生评价。仅调用反馈接口,不调用结课接口。
  • 线上实际教师会话只读回读 app_lesson_report 和 e_order_detail:预约 858318(截图对应熊小俊,2026-10-04 14:00)两处均返回 editFeedback;未代老师填写或提交业务反馈。

发布和回滚

已发布 2026-10-15-feedback-entry-v13:只更新数据库 xs_lesson_feedback_update 定义和 app gateway 中权限判断及版本标记,两个 ops gateway 代码保持原样。发布前确认没有运行中的旧系统同步任务,备份实际线上函数及 SQL 定义;发布后核对保存代码、数据库定义及实际网关版本响应。

私有备份和读回结果位于 ~/.local/state/xiaoshu/cloud-releases/2026-10-15-feedback-entry/,不提交账号会话和生产数据。回滚时恢复备份的单一 SQL 函数定义及 app gateway 代码,保留新产生的报告、原教学/计薪凭据及幂等命令,不删除业务记录。

前端完成本地构建和浏览器验收,未部署线上前端;实际微信 WebView 未验收。上述浏览器保存使用隔离接口数据,不等同于真实用户写入验收。