feat: PLANNING体系首版(00路线图/02任务总表/03执行协议/I-03/I-04/registry42口径)+M1止血交付
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# 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 人在学";序列化器输出新字段
|
||||
|
||||
## 三、执行步骤
|
||||
|
||||
```text
|
||||
1. 定位 Follow / DailyCheckin / ChapterRead 现有实现与序列化器
|
||||
2. 后端三处接口(保持异步 adrf 风格与响应码规范)
|
||||
3. 前端 Articles 第 5 态 + 签到卡 + 课程卡徽标
|
||||
4. 补测试:feed 过滤正确性(关注/未关注/互关)、签到幂等(重复签到不重复发币)、聚合去重
|
||||
```
|
||||
|
||||
## 四、验收标准
|
||||
|
||||
- [ ] 关注 A 后,`feed=following` 只出现 A 的文章;未关注时为空态提示
|
||||
- [ ] 签到卡:连续天数正确、重复签到幂等(第二次不重复发币)
|
||||
- [ ] `learners_count` = 该课程下 ChapterRead 去重用户数(构造 2 用户交叉阅读用例验证)
|
||||
- [ ] 未登录访问首页签到卡有引导态
|
||||
- [ ] 既有测试全绿 + 新增 ≥6 用例
|
||||
|
||||
## 五、验收命令(参考)
|
||||
|
||||
```bash
|
||||
cd chunyu_project && python manage.py test article user learn -v 2
|
||||
# 手工:A 关注 B → feed=following 出现 B 文章;连续签到两次 → 金币只发一次
|
||||
```
|
||||
|
||||
## 六、边界(不许做)
|
||||
|
||||
- 不做推荐算法(feed 只有"关注"过滤,不做排序模型)
|
||||
- 不改 Follow/签到既有字段与 API 契约
|
||||
- 签到卡不做弹窗动画等花活(先接线)
|
||||
|
||||
## 七、交接
|
||||
|
||||
写 `PROGRESS_C-06.md`(含三处用例输出证据)。
|
||||
Reference in New Issue
Block a user