新功能:个性化推荐算法

This commit is contained in:
吕新雨
2026-02-02 16:47:37 +08:00
parent 936094211b
commit 6dc4e2b943
119 changed files with 7427 additions and 357 deletions

View File

@@ -87,21 +87,36 @@ spec_kit/Personalized Reco/
> 原则先把“数据可查”打通再实现“可排序”最后做“可对外提供API/任务)”与“可观测”。
1. **`modules/db-design/`(数据库设计与迁移)**
1. **`modules/db-design/`(数据库设计与迁移)**已实施
- 交付:表结构 + Alembic 迁移可跑通;能插入/读取最小 `ContentProfile` 字段。
2. **`modules/content-repository/`(数据访问层)**
2. **`modules/content-repository/`(数据访问层)**已实施
- 交付:按场景/回退层级拉候选、按 ID`content_id` 自增 `int`批量查risk_flags 旧→新映射与默认值兜底。
- 语言:`text` 按客户端 `locale` 输出(当前仅 EN/TC且不允许语言回退缺语言内容直接过滤
- 口径suitability 读取层统一输出稳定结构;缺失时补齐“全 0.5”key 集合固定为:
- context`family/work/relationship/friends/health`
- need`emotional_support/parenting_pressure/self_worth/anxiety_relief/rest_balance`
3. **`modules/scoring/`(打分)**
3. **`modules/scoring/`(打分)** 已实施
- 交付:`final_score` 与缺失字段保守策略V1.2实现Push 的 `P_uncertainty`Widget 情绪区间软降权。
4. **`modules/rerank-freqcap/`(去重/重排/频控)**
4. **`modules/rerank-freqcap/`(去重/重排/频控)** 已实施
- 交付基于传入历史集合的去重Feed 的 MMRPush/Widget 冷却窗口规则(先保证“同句不重复”)。
5. **`modules/observability/`(可观测)**
5. **`modules/observability/`(可观测)** 已实施
- 交付:统一 `meta` 结构与字段;能准确定位候选在何阶段被清空/回退。
6. **`modules/reco-engine/`(引擎编排)**
- 交付:串起候选→过滤→打分→重排→回退;输出 items+meta在画像缺失/候选不足时仍稳定返回。
7. **`modules/integration-api-worker/`API + Celery 集成)**
- 交付:FastAPI 路由 + Celery 任务都能调用同一引擎;相同输入下结果一致(忽略时间戳差异)
6. **`modules/reco-engine/`(引擎编排)** 已实施
- 交付:新增后端 `reco_engine`(编排器 + Hard Filter串起候选→过滤→打分→重排→回退;输出 items+meta默认开启轻量 explanations在画像缺失/候选不足时仍稳定返回。
7. **`modules/integration-api-worker/`API + Celery 集成)** 已实施
- 交付:新增 `/v1/reco/{feed|push|widget}` 三个推荐接口(含 `Accept-Language→en/tc``X-Now` 注入);新增按 IP 限流 10/min新增 Celery 任务 `tasks.reco.generate``tasks.reco.push_once`,均调用同一 `Reco Engine`
---
## 6. 变更记录
- 2026-02-02完成 `modules/scoring/``plan.md``tasks.md`,并新增后端打分模块 `server/app/features/personalized_reco/scoring/` 与单元测试 `server/tests/test_scoring.py`
- 2026-02-02完成 `modules/rerank-freqcap/``plan.md``tasks.md`,并新增后端重排/频控模块 `server/app/features/personalized_reco/rerank_freqcap/` 与单元测试 `server/tests/test_rerank_freqcap.py`
- 2026-02-02完成 `modules/observability/``plan.md``tasks.md`,并新增后端可观测模块 `server/app/features/personalized_reco/observability/` 与单元测试 `server/tests/test_observability.py`
- 2026-02-02完成 `modules/reco-engine/``plan.md``tasks.md`,并新增后端引擎编排模块 `server/app/features/personalized_reco/reco_engine/`(含 Hard Filter + Orchestrator与单元测试 `server/tests/test_reco_engine.py`
- 2026-02-02完成 `modules/integration-api-worker/``plan.md``tasks.md`,并新增后端集成:
- FastAPI`server/app/api/v1/reco.py``server/app/api/limits.py``server/app/main.py`
- Celery`server/app/tasks/reco.py`
- 测试:`server/tests/test_integration_api_worker.py`
- 依赖:`server/requirements.txt`(新增 `httpx` 用于 API 测试)