feat: PLANNING体系首版(00路线图/02任务总表/03执行协议/I-03/I-04/registry42口径)+M1止血交付

This commit is contained in:
2026-09-12 14:25:25 +08:00
commit 39af400fc8
472 changed files with 36277 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
# E-04 · 三步引导 + 考试倒计时 + 每日目标
| 字段 | 值 |
|---|---|
| 项目 | EnglishDrill · `Desktop/english-drill` |
| 优先级 | P0 · M2 |
| 建议模型 | glm-5.3-flash(主)/ qwen3.8-flash(兼容性复核) |
| 依赖 | 无 |
| 预估 | 1.5 天 |
## 一、背景(为什么做)
新人注册后落在首页——空统计、空错题、空单词足迹,不知道该干嘛;`DailyPlan.target_per_day` 写死默认 20。倒计时是**最廉价的心理驱动**,且完全不需要内容投入(增长报告 P0-4)。
## 二、目标(交付物)
1. **数据**:`PROFILE` 增两字段 `exam_date`(考试日期,可空)、`daily_target`(每日词量,默认 20)。
2. **三步引导 `/onboarding`**(仅新用户或未设置目标用户触发一次):
- ① 选目标考试(高考 / CET-4 / CET-6 / 考研 / 其他 → 存 `exam_date` 占位或手选日期)
- ② 选词书(复用现有词书数据)
- ③ 设每日词量(默认 20,可调)
- 完成 → 跳首页
3. **首页展示**:"距离高考还有 240 天 · 今日 20 词已排好"(exam_date 空则不显示倒计时,只显示今日目标)。
4. 可跳过引导(跳过=用默认值,之后可从设置再进入)。
## 三、执行步骤
```text
1. 侦察 PROFILE 模型与序列化器、注册后跳转逻辑
2. 字段 + 迁移 + 兼容默认(老用户 exam_date=null 全链路不报错)
3. /onboarding 三步页(组件按项目移动端适配惯例)
4. 首页倒计时/目标条
5. E2E:新用户引导流程、跳过、老用户兼容
```
## 四、验收标准
- [ ] 新用户注册后进入引导(或可跳过);完成三步后首页出现倒计时与今日目标
- [ ] 老用户(无新字段值)全站不报错、首页降级显示正常
- [ ] 倒计时按 `exam_date` 精确计算(用例:固定日期 → 期望天数)
- [ ] 修改每日目标后今日计划随之变化
- [ ] 既有 E2E 全绿 + 新增 ≥6 用例
## 五、验收命令(参考)
```bash
cd backend && python tests/e2e/run_e2e.py -k onboarding
python tests/e2e/run_e2e.py --http
```
## 六、边界(不许做)
- 不做复杂考试规划算法(倒计时 + 目标数字即可)
- 不改 DailyPlan 既有调度逻辑(target_per_day 只是默认值来源)
## 七、交接
写 `PROGRESS_E-04.md`(含兼容性用例证据)。