Files
vscode-workbench/PLANNING/tasks/E-01-分享战报.md
T

2.8 KiB
Raw Blame History

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(含接口用例输出、出图截图说明、扫码验证结论)。