# 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`(含兼容性用例证据)。