Files
vscode-workbench/PLANNING/tasks/E-06-PWA与推送.md
T

2.2 KiB
Raw Blame History

E-06 · PWA + 推送提醒

字段 值
项目 EnglishDrill · Desktop/english-drill(frontend + backend 定时任务)
优先级 P1 · M3
建议模型 deepseek-v4.1-flash(主)/ gemini-3.8-flash(PWA 视觉验收)
依赖 无
预估 2.5 天

一、背景(为什么做)

增长报告 P1 双项(docs/AGI增长点分析-2026-09-11.md #7 + #8):

  • UserProfile.notify_email 字段存在但从未被读取(死字段)——提醒通道是空的;
  • 让网站装到主屏(PWA)打开率显著高于"再开浏览器输网址";两者共用 Service Worker 基建,一起做成本最低。
  • 提醒钩子:连续天数将断 —— "你的 7 天连续记录今天就要断了"比"快回来学习"有效 10 倍。

二、目标(交付物)

A. PWA 基建

  1. manifest.json(名称/图标/主题色/display: standalone)+ Service Worker 注册
  2. 离线能力:预缓存题库 JSON + 首页壳 → 无网络可刷已缓存题,联网后同步
  3. 安装引导(可选提示条)

B. 推送提醒(Web Push) 4. VAPID 密钥对生成脚本 + 订阅管理接口(POST/DELETE /api/accounts/push-subscription) 5. 订阅存储(新表或扩展 profile:endpoint/keys/created_at) 6. 定时任务:每日扫"今天未学 + 连续天数≥3 将断"用户 → 发提醒(每用户每天最多 1 条,硬上限) 7. 关闭开关(尊重用户设置,一键退订真生效)

三、验收标准

  • PWA 可安装(Lighthouse PWA 项通过或手动安装验证)
  • 离线打开可答已缓存题;联网后记录不丢
  • 推送订阅成功 → 测试推送可达(浏览器实测)
  • 提醒任务:构造"将断签"用户 → 收到且当天仅 1 条
  • 退订后不再收到
  • 不滥用验证:普通用户连续多日仍只发 1 条/天
  • 既有 E2E 全绿(SW 不干扰既有测试)

四、边界(不许做)

  • 不做原生 App 推送(PWA 路线,成本优先)
  • 不发营销内容(只发学习状态提醒)
  • 不改动现有登录/学习主流程(SW 只做缓存层)

五、交接

写 PROGRESS_E-06.md(含 PWA 安装验证、推送实测记录、频率限制用例)。