Ver Fonte

docs: record historical review date fix and production verification

彭峰 há 9 horas atrás
pai
commit
1d3f74d70f
1 ficheiros alterados com 37 adições e 0 exclusões
  1. 37 0
      docs/qa/review-history-dates-2026-11-06.md

+ 37 - 0
docs/qa/review-history-dates-2026-11-06.md

@@ -0,0 +1,37 @@
+# 抗遗忘历史日期显示修复 · 2026-11-06
+
+## 问题与原因
+
+曾子瑜陪练反馈,选择 8 月不同日期的抗遗忘记录时,下方时间都显示 9 月 1 日。
+
+只读核对该老师(旧用户编号 1810)名下 2026 年 8 月全部 892 条任务,覆盖 31 个计划日期:`kywrq` 与 `kywsj` 的日期全部一致,任务日期本身无需修复。
+
+线上 `appReviewPage` 的 `learned_at` 错读 `DailyStudyRecord.createdAt`。历史记录的这个字段保存的是新系统导入时间,样本均为 2026-09-01。页面把它标为“首次学习”,导致不同复习日期下方都显示迁移当天。原始学习时间保存在关联学习主表 `CommonModel.createTime`。
+
+例如,8 月 15 日任务的一个样本,原响应显示首次学习于 9 月 1 日;修复后返回原始学习时间 `2026-08-10T14:09:31Z`(北京时间 8 月 10 日 22:09)。复习计划仍为 8 月 15 日。
+
+## 修复
+
+- 后端读取关联学习记录的原始 `createTime`;缺少时间时沿用已有学习日期降级显示,不用迁移时间补齐。
+- 前端统一优先读取计划日期 `kywrq`,旧数据缺少计划日期时兼容 `kywsj` 等原有字段。日历、任务状态和复习跳转均使用同一日期解析。
+- 未改写学习任务、完成状态、老师归属或费用记录。
+
+代码提交:`65725e515e3300c93d995152d25131bd0e44724c`,已推送 `origin/main`。
+
+## 验证
+
+- 新增测试先复现迁移时间误用和复习日期字段冲突,再验证修复。
+- 移动端全部 335 项测试通过;相关后端 7 项通过(历史时间、日期缺失降级、姓名、费用范围及老师读取);移动端生产构建与 11 个云函数定义校验通过。
+- 使用线上函数源码和正式数据库,只读核对 8 月 1 日、15 日、31 日。分别有 24、29、27 条记录;修复前后任务数量一致,原始学习日期恢复。读取验证通过临时受限辅助函数执行,完成后删除;未使用老师真实登录会话。
+
+## 发布
+
+后端仅替换 `xiaoshu.app.gateway.appReviewPage`,发布前比较线上源码,其他函数保持不变;发布后源码哈希回读一致。无需数据库迁移。
+
+手机端发布编号:`mobile-65725e515e33-20261106T154546351Z`。
+
+源站与公网全部 105 个文件 SHA-256 一致,默认版本清单与无版本参数入口通过;另核对抗遗忘日历、复习详情、抗遗忘历史与费用页入口。CDN 刷新任务 `8095259846`。旧资源保留,管理端版本未变。
+
+375px 浏览器加载线上静态资源,以隔离接口呈现正式只读查询得到的日期样本:切换 8 月 1 日、15 日、31 日,计划日期分别正确显示,首次学习显示原始日期;跳转参数携带 8 月 31 日,页面无脚本异常、无横向溢出。该浏览器检查不代表老师真实账号或手机微信实机验收。
+
+证据及旧版本入口备份:`~/.local/state/xiaoshu/cloud-releases/2026-11-06-review-dates/`。回退时恢复 `gateway-before.json` 中的旧 `appReviewPage` 及 `mobile/baseline/` 中的入口和版本清单,再刷新 CDN;不删除业务记录或历史资源。