# S-03 · 推荐引擎 v2(多目标 + 兴趣画像) | 字段 | 值 | |---|---| | 项目 | DSP · `Desktop/dsp/dsp`(backend 推荐逻辑 + web feed) | | 优先级 | P1 · M3 | | 建议模型 | deepseek-v4.1-flash(主)/ qwen3.8-flash(排序用例复核) | | 依赖 | S-01(测试基建先绿,推荐回归必须有网) | | 预估 | 3 天 | ## 一、背景(为什么做) DSP 架构文档自认推荐是"**简化版:热度 + 时间衰减 + 标签匹配**"(`docs/architecture.md` 对照表),而抖音级产品的推荐是多目标排序(完播/点赞/评论/关注)。现有 `tests/test_ranking.py`(434 行)+ `docs/ranking.md` 已有排序测试与设计底子——在此之上做 v2 是**有测试保护的可控升级**,且直接决定 feed 留存。 ## 二、目标(交付物) 1. **多目标信号采集**:完播(播放时长/视频时长)、点赞、评论、收藏、关注——从现有行为表(VideoView/Like/Comment)聚合出行为权重。 2. **兴趣画像(轻量)**:用户对标签(`videos_tag`)的隐式偏好向量(行为加权累积);无画像时回退冷启动(现有逻辑)。 3. **排序公式 v2**:`score = 热度分(多目标加权) × 时间衰减 × 兴趣匹配系数`;参数全部可配置(settings,不硬编码)。 4. **测试**:排序回归扩展(新增多目标与画像用例);A/B 友好的参数快照。(与 S-01 协同,不重复建基建。) 5. 文档:`docs/ranking-v2.md`(公式、参数、回退策略、与 v1 的差异清单)。 ## 三、验收标准 - [ ] 多目标权重生效:构造"高完播低赞"与"低完播高赞"视频 → 排序符合配置权重 - [ ] 兴趣画像:用户偏好的标签内容排序提升(确定性用例) - [ ] 冷启动用户回退 v1 行为(无画像不报错、不空 feed) - [ ] 所有参数可在 settings 调整并生效 - [ ] 既有 test_ranking 零回归 + 新增 ≥10 用例 - [ ] 性能:feed 接口 P95 延迟不劣化 >20%(附基线对照) ## 四、验收命令(参考) ```bash cd backend && pytest -q -k ranking pytest -q # 全量 ``` ## 五、边界(不许做) - 不引入 ML 框架(纯统计加权,可控可测) - 不做实时特征流(批式聚合) - 不改前端 feed 契约(排序在服务端) - 不删除现有 ranking 测试(只扩展) ## 六、交接 写 `PROGRESS_S-03.md`(含权重用例输出、性能对照、回退策略证据)。