2.8 KiB
2.8 KiB
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,不支持时降级保存) - 移动端视口适配
- 入口:个人中心/学习统计页加入口按钮
三、执行步骤
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 不回归
五、验收命令(参考)
cd backend && python tests/e2e/run_e2e.py -k report
python tests/e2e/run_e2e.py --http # 真实 granian 交叉验证
# 视觉验收:浏览器打开 /report → 生成图 → 交付截图给视觉模型检查
六、边界(不许做)
- 不新增收费点(增长期约束,报告明确"零收费")
- 不改现有排行榜/统计逻辑(复用其函数)
- 不引重量级图表库(Canvas 手绘即可)
七、交接
写 PROGRESS_E-01.md(含接口用例输出、出图截图说明、扫码验证结论)。