feat/8-due-word-review
main
#8 实现完成,待用户验收。固定间隔表、状态转换、幂等作答与验证证据见工单评论。
本地验证:Go 单测与集成测试(专用库 lexgo_test_issue8,41 项)、学习端 71 单测与 5 项 E2E、管理端 31 单测、治理 56 测试全部通过;真实 API+MySQL 38 项检查与真实浏览器完整闭环通过。
- schema v6 新增 lexgo_term_reviews 与 lexgo_review_answers:语句都是可重试的加法迁移, 既有已保存词汇按 created_at 立即进入队列;旧二进制回到 v5 仍可写入个人词条 - 固定间隔表 1/2/4/7/15/30/60 天:答对升级封顶 7、答错降级最低 1、再学一次不改等级, 答错与再学立即回到本轮;已知与忽略不入队 - GET /api/v1/reviews/queue 与 POST /api/v1/reviews/:termId/answers:按 answerId 去重、 按 expectedDueAt 判定过期标签页,重复提交与并发都不重复更新次数和间隔 - 学习端新增 /review 路由与到期复习入口,正面挖空例句、答案面评分、完成页与空队列页 - 同步 Architecture-and-Code-Map、Business-Rules-and-Glossary、 Local-Development-and-Verification、Product-Requirements-Overview 与 Home
- R2 并发同键作答:取得词条行锁后加锁复查答案键,stale 插入遇到唯一键冲突转为返回 已记录结果,不再返回 500;新增两个 goroutine 同键提交的集成用例 - R3 排期:只有新建或状态/等级实际变化才移动 due_at,编辑释义与例句保留原排期, 逾期词条不会被挤出当天队列 - R3 附带发现:保存未提及等级时保留已获得的等级,阅读器面板不再把 4 级词重置为 1 级 - R1 契约:作答响应 result 只取 applied/stale,另加 duplicate 标记,重放返回首次结果; 客户端按首次结果计数,本轮只解决卡片而没有新计分时显示完成页而不是空队列 - R4/R5:stale 与重放分别给出角色为 status 的提示,answerId 作用域注释与实现一致 - Wiki 更新 Business-Rules-and-Glossary、Architecture-and-Code-Map、 Local-Development-and-Verification 并同步镜像
No dependencies set.
The note is not visible to the blocked user.
#8 实现完成,待用户验收。固定间隔表、状态转换、幂等作答与验证证据见工单评论。
本地验证:Go 单测与集成测试(专用库 lexgo_test_issue8,41 项)、学习端 71 单测与 5 项 E2E、管理端 31 单测、治理 56 测试全部通过;真实 API+MySQL 38 项检查与真实浏览器完整闭环通过。