Files
vscode-workbench/PLANNING/tasks/C-06-关注Feed与签到卡.md
T

2.7 KiB
Raw Blame History

C-06 · 关注 Feed + 首页签到卡 + 学习数据钩子

字段 值
项目 可乐工具 · 后端(article/learn/user app)+ chunyu_project_react
优先级 P1 · M3
建议模型 glm-5.3-flash(主)/ qwen3.8-flash(用例复核)
依赖 无
预估 1.5 天

一、背景(为什么做)

三个存量能力已实现但没接出口(docs/产品内容分析.md §3 核实):

  1. user.Follow 模型已有,但文章流没有"关注"维度(掘金三态信息流:推荐/最新/关注)。
  2. DailyCheckin + 签到 API 已有,首页无签到入口——掘金首页第一屏就是"去签到"。
  3. ChapterRead 已记录阅读行为,统计"在学人数"只差一个聚合接口。

一句话:地基打完,差三根接线。

二、目标(交付物)

  1. 关注 feed:
    • 后端:GET /api/article/list?feed=following(基于 Follow 关系过滤,分页对齐现有接口)
    • 前端:Articles.tsx 排序组新增第 5 态"关注";文章卡加作者头像 + 关注按钮
  2. 首页签到卡:
    • 复用现有 DailyCheckin API;Home.tsx 加签到卡(连续天数 + 今日可得金币 + 一键签到)
    • 签到成功即时刷新状态,已签到显示"今日已签"
  3. 学习数据钩子:
    • learn app 聚合接口:learners_count(ChapterRead 按用户去重统计)、total_minutes
    • 课程卡显示"XX 人在学";序列化器输出新字段

三、执行步骤

1. 定位 Follow / DailyCheckin / ChapterRead 现有实现与序列化器
2. 后端三处接口(保持异步 adrf 风格与响应码规范)
3. 前端 Articles 第 5 态 + 签到卡 + 课程卡徽标
4. 补测试:feed 过滤正确性(关注/未关注/互关)、签到幂等(重复签到不重复发币)、聚合去重

四、验收标准

  • 关注 A 后,feed=following 只出现 A 的文章;未关注时为空态提示
  • 签到卡:连续天数正确、重复签到幂等(第二次不重复发币)
  • learners_count = 该课程下 ChapterRead 去重用户数(构造 2 用户交叉阅读用例验证)
  • 未登录访问首页签到卡有引导态
  • 既有测试全绿 + 新增 ≥6 用例

五、验收命令(参考)

cd chunyu_project && python manage.py test article user learn -v 2
# 手工:A 关注 B → feed=following 出现 B 文章;连续签到两次 → 金币只发一次

六、边界(不许做)

  • 不做推荐算法(feed 只有"关注"过滤,不做排序模型)
  • 不改 Follow/签到既有字段与 API 契约
  • 签到卡不做弹窗动画等花活(先接线)

七、交接

写 PROGRESS_C-06.md(含三处用例输出证据)。