M-QUIZ-01 Quiz 答题闭环与跨端契约收口
背景
现有 Quiz 生成引擎已完成(M-AI-07),但跨端审计发现:
- 历史 Attempt 会导致新 Attempt 提前看到答案
- 同一 Attempt 并发提交可能重复结算
- iOS 使用的详情接口不返回 Questions,答题区无法正常加载
- choice / fill / judge 缺少统一跨端契约
- fill 判分和结果展示不完整
- 学习分析未计算题型维度正确率
目标
完成以下闭环:
开始答题
→ 创建独立 Attempt
→ 加载脱敏题目
→ choice / fill / judge 正确作答
→ 服务端原子判分
→ QuizAnswer 持久化
→ 结果页展示
→ 学习分析读取题型表现
范围
- Attempt 级答案可见性
- 提交原子性与幂等
- iOS 题目加载和 Attempt 生命周期
- 三种题型跨端格式(choice / fill / judge)
- fill 判分与结果展示
- 题型维度学习分析
- 真实 E2E 与最终 Gate
非目标
- 新增多选题 / 主观题
- AI Quiz Prompt 重构
- Quiz 生成引擎重构
- 单题停留时间 / 修改答案次数 / 信心程度 / 错误类型诊断
- 会员订阅 / 错题本完整重构
Issue 列表
| # | Issue | 风险 | 仓库 |
|---|---|---|---|
| 01 | Attempt 生命周期与答案可见性控制 | P0 | api-server |
| 02 | 提交原子性与幂等控制 | P0 | api-server |
| 03 | iOS 题目加载与 Attempt 生命周期对接 | P1 | ios-projects + api-server |
| 04 | 冻结 choice、fill、judge 跨端契约并完善 fill 题型 | P1 | api-server + ios-projects |
| 05 | 接入 Quiz 题型维度学习分析 | P1 | api-server |
| 06 | GATE Quiz 跨端答题闭环最终验收 | P0 | 全栈 E2E |
依赖关系
01 (Attempt + 答案隐藏) P0
├── 02 (原子提交 + 幂等) P0
├── 03 (iOS 加载 + 生命周期) P1 —— 可与 04 并行
└── 04 (跨端契约 + fill) P1 —— 可与 03 并行
└── 05 (题型学习分析) P1
└── 06 (GATE 最终验收) P0
完成标准
- 新 Attempt 不受历史 Attempt 影响
- 未提交前不返回答案和解析
- 同一 Attempt 只能结算一次
- iOS 可以正常加载并完成 Quiz
- choice、fill、judge 格式统一
- fill 判分规则明确且可用
- 结果页展示用户答案和正确答案
- 学习分析包含题型维度正确率
- 核心 E2E 0 failed、0 skipped
- M-QUIZ-01-GATE PASS
No due date
100% Completed