2.7 KiB
2.7 KiB
C-06 · 关注 Feed + 首页签到卡 + 学习数据钩子
| 字段 | 值 |
|---|---|
| 项目 | 可乐工具 · 后端(article/learn/user app)+ chunyu_project_react |
| 优先级 | P1 · M3 |
| 建议模型 | glm-5.3-flash(主)/ qwen3.8-flash(用例复核) |
| 依赖 | 无 |
| 预估 | 1.5 天 |
一、背景(为什么做)
三个存量能力已实现但没接出口(docs/产品内容分析.md §3 核实):
user.Follow模型已有,但文章流没有"关注"维度(掘金三态信息流:推荐/最新/关注)。DailyCheckin+ 签到 API 已有,首页无签到入口——掘金首页第一屏就是"去签到"。ChapterRead已记录阅读行为,统计"在学人数"只差一个聚合接口。
一句话:地基打完,差三根接线。
二、目标(交付物)
- 关注 feed:
- 后端:
GET /api/article/list?feed=following(基于Follow关系过滤,分页对齐现有接口) - 前端:
Articles.tsx排序组新增第 5 态"关注";文章卡加作者头像 + 关注按钮
- 后端:
- 首页签到卡:
- 复用现有 DailyCheckin API;
Home.tsx加签到卡(连续天数 + 今日可得金币 + 一键签到) - 签到成功即时刷新状态,已签到显示"今日已签"
- 复用现有 DailyCheckin API;
- 学习数据钩子:
learnapp 聚合接口: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(含三处用例输出证据)。