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 8242e730b4
482 changed files with 37029 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
# E-01 · 分享战报(周报图 + 邀请二维码)
| 字段 | 值 |
|---|---|
| 项目 | EnglishDrill · `Desktop/english-drill`(backend + frontend) |
| 优先级 | P0 · M1 |
| 建议模型 | deepseek-v4.1-flash(主)/ gemini-3.8-flash(出图视觉验收) |
| 依赖 | 无 |
| 预估 | 1.5 天 |
## 一、背景(为什么做)
增长分析报告给它的定性是"**最高 ROI**"(`docs/AGI增长点分析-2026-09-11.md` P0-1):现在用户学得再好,没有任何可外发的物料——传播段为零。图里带邀请码和二维码,天然把"分享"接上"邀请裂变"。
数据全部现成:`Attempt` + `ExpLog` + `ProgressBar` 都有聚合基础。
## 二、目标(交付物)
**后端**
- `GET /api/accounts/report/week` → `{ attempted, correct_rate, streak_days, words_mastered, rank, invite_code }`(本周窗口 = 最近 7 天;排名复用本轮排行榜逻辑)
**前端**
- `/report` 新页面:
- 数据卡(本周战绩)
- **Canvas 绘制 750×1000 战报图**:战绩数据 + 邀请码 + 二维码(二维码库复用项目现有依赖,若无则引入轻量 `qrcode` 生成 dataURL 再 drawImage)
- 「保存图片」(`canvas.toBlob` → download)与「分享」(`navigator.share`,不支持时降级保存)
- 移动端视口适配
- 入口:个人中心/学习统计页加入口按钮
## 三、执行步骤
```text
1. 侦察现有统计接口与邀请码字段(复用,不重造聚合)
2. 周报接口 + 用例(窗口边界、无数据用户空态)
3. /report 页 + Canvas 绘制(DPR 处理防模糊、字体加载等待 document.fonts.ready)
4. 保存/分享链路(含降级)
5. 移动端视口验证 + 出图视觉验收
```
## 四、验收标准
- [ ] 周报接口字段全部正确(含无数据用户返回零值不报错)
- [ ] 窗口边界正确:7 天内记录计入、7 天+1 秒外不计入
- [ ] Canvas 产出 750×1000 完整图:战绩 + 邀请码 + **二维码可扫(扫码指向注册链接)**
- [ ] 保存下载文件名语义化(如 `englishdrill-report-2026-09-11.png`)
- [ ] `navigator.share` 可用时调起分享;不可用时降级为保存
- [ ] 移动端(390×844)完整可用
- [ ] E2E 新增用例(report 接口 + 页面可达);既有 84/84 不回归
## 五、验收命令(参考)
```bash
cd backend && python tests/e2e/run_e2e.py -k report
python tests/e2e/run_e2e.py --http # 真实 granian 交叉验证
# 视觉验收:浏览器打开 /report → 生成图 → 交付截图给视觉模型检查
```
## 六、边界(不许做)
- 不新增收费点(增长期约束,报告明确"零收费")
- 不改现有排行榜/统计逻辑(复用其函数)
- 不引重量级图表库(Canvas 手绘即可)
## 七、交接
写 `PROGRESS_E-01.md`(含接口用例输出、出图截图说明、扫码验证结论)。