Files
congsh ba6e7669e8 Initial commit: RSS platform phase 1 skeleton with code review fixes
Features:
- FastAPI + SQLAlchemy 2.0 async + PostgreSQL/pgvector + Redis backend
- Vue 3 + TypeScript + Element Plus frontend
- JWT auth with access/refresh tokens and revocation
- Admin/member RBAC
- RSS feed CRUD and article listing
- Settings management with Fernet encryption for sensitive values
- Redis distributed lock service
- Alembic initial migration
- Docker Compose development environment

Fixes from code review:
- Fix DB session leak in dependency injection
- Restrict registration to admin only
- Add default admin password warning
- Implement JWT refresh tokens and jti blacklist
- Strengthen password policy
- Use func.count for pagination totals
- Replace NullPool with AsyncAdaptedQueuePool
- Remove init_db from lifespan to enforce alembic migrations
- Add request_id middleware and logging filter
- Fix vite.config.ts env loading
- Add frontend token refresh interceptor
- Add Vue error handler

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 17:01:57 +08:00

537 lines
20 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RSS 信息处理平台:开发步骤文档
> 版本:v1.0
> 日期:2026-06-15
> 配套文档:`rss-platform-design.md`
---
## 一、总体策略
### 1.1 开发原则
| 原则 | 说明 |
|------|------|
| **渐进式重构** | 不是一次性推翻重写,而是逐步迁移现有能力 |
| **先跑通再优化** | 先让核心流程(抓取→清洗→AI→存储)跑起来,再扩展高级功能 |
| **数据先行** | 先确定数据模型和迁移方案,再写业务逻辑 |
| **可回滚** | 每个阶段都保留回退到旧系统的能力 |
| **测试护航** | 关键模块必须有单元测试和接口测试 |
### 1.2 阶段划分
```
阶段一:基础骨架(4-5 周)
→ 技术选型确认、项目结构、PostgreSQL 迁移、Docker 环境、基础 API
阶段二:核心流程(4-5 周)
→ RSS 抓取、清洗流水线、去重插件、AI 摘要/分类/Tag/打分、任务调度
阶段三:产出与聊天(3-4 周)
→ Skill 系统、日报任务、聊天窗口、引用链接
阶段四:自优化与工业化(3-4 周)
→ 自优化调度器、去重算法自优化、监控、日志、备份
阶段五:规模化与优化(持续)
→ 性能优化、OpenSearch、分库分表、服务拆分
```
---
## 二、阶段一:基础骨架(Week 1-5)
### 目标
搭建可运行的基础平台,完成数据库迁移、Docker 环境、用户鉴权、基础 API。
### 任务清单
#### Week 1:项目初始化与技术选型确认
| 任务 | 说明 | 产出 |
|------|------|------|
| 2.1.1 创建 monorepo | 在 `/home/congsh/workspace/dev/rss-platform` 初始化项目 | `README.md``Makefile``docker-compose.yml` |
| 2.1.2 确定目录结构 | 按模块划分目录 | 见下方目录结构 |
| 2.1.3 选择并锁定依赖版本 | Python 3.12、FastAPI、SQLAlchemy 2.0、Celery、PostgreSQL、Redis | `backend/requirements.txt` |
| 2.1.4 配置代码质量工具 | ruff、black、pytest、pre-commit | `.pre-commit-config.yaml``pyproject.toml` |
| 2.1.5 创建 Docker 基础镜像 | 后端、前端、PostgreSQL、Redis、MinIO | `Dockerfile``docker-compose.dev.yml` |
**推荐目录结构:**
```
rss-platform/
├── backend/
│ ├── app/
│ │ ├── core/ # 配置、日志、异常、鉴权
│ │ ├── models/ # SQLAlchemy 模型
│ │ ├── schemas/ # Pydantic 模型
│ │ ├── api/ # API 路由
│ │ ├── services/ # 业务服务
│ │ ├── tasks/ # Celery 任务
│ │ ├── plugins/ # 插件接口与加载器
│ │ ├── ai/ # AI 调用、Provider 路由
│ │ ├── skills/ # Skill 加载与执行
│ │ ├── search/ # 检索服务
│ │ ├── chat/ # 聊天引擎
│ │ └── optimization/ # 自优化
│ ├── alembic/ # 数据库迁移
│ ├── tests/
│ └── main.py
├── frontend/
│ ├── src/
│ │ ├── views/
│ │ ├── components/
│ │ ├── api/
│ │ ├── stores/
│ │ └── router/
│ └── package.json
├── plugins/
│ └── deduplication/
├── docker/
│ ├── backend.Dockerfile
│ ├── frontend.Dockerfile
│ └── docker-compose.yml
├── docs/
└── scripts/
├── migrate_from_sqlite.py
└── init_dev_env.sh
```
#### Week 2PostgreSQL 数据模型与迁移
| 任务 | 说明 | 产出 |
|------|------|------|
| 2.2.1 设计并创建核心表 | users、feeds、raw_articles、cleaned_articles、article_references、skills 等 | `backend/app/models/` |
| 2.2.2 配置 Alembic | 初始化迁移工具 | `alembic.ini`、baseline migration |
| 2.2.3 编写 SQLite → PostgreSQL 迁移脚本 | 从 rssKeeper + dataClean 导出并导入 | `scripts/migrate_from_sqlite.py` |
| 2.2.4 验证迁移数据完整性 | 对比条数、关键字段抽样 | 迁移报告 |
| 2.2.5 配置 pgvector 扩展 | 安装并创建向量表 | `article_embeddings` 表 |
#### Week 3FastAPI 基础与鉴权
| 任务 | 说明 | 产出 |
|------|------|------|
| 2.3.1 FastAPI 项目骨架 | lifespan、中间件、异常处理、日志 | `backend/main.py` |
| 2.3.2 JWT 鉴权 | 登录、注册、Token 刷新、API Key | `backend/app/core/auth.py` |
| 2.3.3 简单 RBAC | admin / member 角色 | `backend/app/core/rbac.py` |
| 2.3.4 CORS 安全配置 | 白名单、关闭 credentials | `backend/main.py` |
| 2.3.5 健康检查与 OpenAPI | `/health``/openapi.json` | API 文档 |
#### Week 4:配置中心与锁服务
| 任务 | 说明 | 产出 |
|------|------|------|
| 2.4.1 配置中心 | 环境变量 + DB 覆盖 + 版本化 | `backend/app/core/settings.py` |
| 2.4.2 Redis 连接 | 缓存、锁、消息队列 | `backend/app/core/redis.py` |
| 2.4.3 分布式锁服务 | 任务锁、文章锁 | `backend/app/services/lock_service.py` |
| 2.4.4 任务运行时状态 | 进度追踪、任务日志 | `backend/app/services/task_runtime.py` |
| 2.4.5 日志与请求 ID | 结构化日志、request_id | `backend/app/core/logging.py` |
#### Week 5:前端基础与管理后台
| 任务 | 说明 | 产出 |
|------|------|------|
| 2.5.1 Vue 3 + TS 项目初始化 | Vite、Element Plus、Pinia、Vue Router | `frontend/` |
| 2.5.2 登录页 | JWT 登录、API Key 管理 | `LoginView.vue` |
| 2.5.3 RSS 源管理页 | 列表、添加、编辑、删除 | `FeedsView.vue` |
| 2.5.4 文章列表页 | 分页、筛选 | `ArticlesView.vue` |
| 2.5.5 Docker Compose 联调 | 全栈本地启动 | `docker-compose.yml` |
### 阶段一交付物
- [ ] 可本地 `docker-compose up` 运行的基础平台
- [ ] PostgreSQL 数据库 + 迁移脚本
- [ ] JWT 鉴权 + 简单 RBAC
- [ ] RSS 源 CRUD + 文章列表
- [ ] 分布式锁服务
### 阶段一里程碑
**M1:基础平台骨架完成,可管理 RSS 源和查看文章列表。**
---
## 三、阶段二:核心流程(Week 6-10)
### 目标
实现抓取→清洗→去重→AI 处理→存储的完整流水线。
### 任务清单
#### Week 6RSS 抓取迁移与增强
| 任务 | 说明 | 产出 |
|------|------|------|
| 3.6.1 迁移抓取逻辑 | 从 rssKeeper `rss_fetcher.py` 迁移 | `backend/app/services/feed_fetcher.py` |
| 3.6.2 Celery 抓取任务 | `fetch_feed_task``fetch_all_feeds_task` | `backend/app/tasks/feeds.py` |
| 3.6.3 Celery Beat 调度 | 按 Feed 间隔注册定时任务 | `backend/app/tasks/scheduler.py` |
| 3.6.4 抓取失败重试 | 指数退避、死信队列 | 重试装饰器 |
| 3.6.5 Feed 健康度统计 | 复用 rssKeeper 逻辑 | `backend/app/services/health_checker.py` |
#### Week 7:清洗流水线
| 任务 | 说明 | 产出 |
|------|------|------|
| 3.7.1 数据标准化 | URL 规范化、HTML 清洗、时间标准化 | `backend/app/services/normalizer.py` |
| 3.7.2 正文提取 | 优先 RSS contentfallback 原文页 | `backend/app/services/content_extractor.py` |
| 3.7.3 清洗任务 Celery 化 | `process_raw_article_task` | `backend/app/tasks/pipeline.py` |
| 3.7.4 内容 hash 与语言检测 | 用于后续去重 | 辅助字段 |
| 3.7.5 清洗状态机 | pending → processing → cleaned / failed | `processing_status` |
#### Week 8:去重插件系统
| 任务 | 说明 | 产出 |
|------|------|------|
| 3.8.1 定义插件接口 | `DeduplicationPlugin` | `backend/app/plugins/base.py` |
| 3.8.2 实现默认去重插件 | URL + 标题 exact + TF-IDF 内容相似 | `plugins/deduplication/current.py` |
| 3.8.3 插件加载器 | 动态 import + 热加载 | `backend/app/plugins/loader.py` |
| 3.8.4 引用关系写入 | `article_references` + `reference_links` | 去重服务 |
| 3.8.5 去重任务接口 | 手动触发、查看结果 | `/api/tasks/deduplicate` |
| 3.8.6 插件版本元数据 | `metadata.json` | 版本管理 |
#### Week 9AI 处理中心
| 任务 | 说明 | 产出 |
|------|------|------|
| 3.9.1 AI Provider 配置模型 | openai / anthropic / gemini / local | `backend/app/models/ai_provider_config.py` |
| 3.9.2 AI 任务配置模型 | 每个任务独立配置 | `backend/app/models/ai_task_config.py` |
| 3.9.3 LiteLLM/自封装多供应商路由 | 统一调用接口 | `backend/app/ai/client.py` |
| 3.9.4 AI 摘要任务 | 复用 dataClean `summarizer.py` | `backend/app/tasks/ai_tasks.py` |
| 3.9.5 AI 分类任务 | 从规则分类迁移到 AI 分类 | `backend/app/tasks/ai_tasks.py` |
| 3.9.6 AI Tag 任务 | AI 打标签 | `backend/app/tasks/ai_tasks.py` |
| 3.9.7 AI 打分任务 | heat/importance/composite | `backend/app/tasks/ai_tasks.py` |
#### Week 10:流水线编排与任务调度
| 任务 | 说明 | 产出 |
|------|------|------|
| 3.10.1 流水线编排器 | 组合抓取→清洗→去重→AI 处理 | `backend/app/services/pipeline_orchestrator.py` |
| 3.10.2 任务进度追踪 | 复用 dataClean `task_progress.py` | `backend/app/services/task_progress.py` |
| 3.10.3 手动/定时任务互斥 | Redis 锁 + Celery | 调度服务 |
| 3.10.4 仪表盘统计 API | 文章数、分类分布、任务状态 | `/api/stats` |
| 3.10.5 前端仪表盘 | 统计卡片、任务进度 | `DashboardView.vue` |
### 阶段二交付物
- [ ] RSS 自动抓取 + Celery 调度
- [ ] 清洗流水线
- [ ] 去重插件系统(默认实现 + 热加载)
- [ ] AI 摘要/分类/Tag/打分
- [ ] 流水线编排与任务进度
### 阶段二里程碑
**M2:核心流程跑通,一篇文章从 RSS 抓取到 AI 处理完成可自动化执行。**
---
## 四、阶段三:产出与聊天(Week 11-14)
### 目标
实现 Skill 系统、日报任务、聊天窗口、引用链接。
### 任务清单
#### Week 11Skill 系统基础
| 任务 | 说明 | 产出 |
|------|------|------|
| 4.11.1 Skill 数据模型 | skills、skill_versions | 数据库表 |
| 4.11.2 Skill 加载与执行 | 解析 prompt、schema、tools | `backend/app/skills/loader.py` |
| 4.11.3 内置默认 Skills | 摘要、分类、Tag、打分、日报、聊天 | `backend/app/skills/defaults/` |
| 4.11.4 Skill CRUD API | 创建、修改、导入、导出、恢复默认 | `/api/skills/*` |
| 4.11.5 Skill 管理前端 | 编辑器、导入导出 | `SkillsView.vue` |
#### Week 12:日报任务系统
| 任务 | 说明 | 产出 |
|------|------|------|
| 4.12.1 OutputTask 模型 | task + skill + filter + schedule | 数据库表 |
| 4.12.2 日报生成任务 | 复用 dataClean `brief.py`,改为 Skill 驱动 | `backend/app/tasks/output_tasks.py` |
| 4.12.3 数据筛选 DSL | 时间、分类、Tag、分数过滤 | Filter builder |
| 4.12.4 多种日报类型 | 科技观察、综合日报等 | 多个 OutputTask |
| 4.12.5 日报前端 | 列表、详情、重新生成 | `BriefsView.vue` |
#### Week 13:聊天引擎
| 任务 | 说明 | 产出 |
|------|------|------|
| 4.13.1 聊天数据模型 | sessions、messages | 数据库表 |
| 4.13.2 聊天 API | 创建会话、发送消息、历史记录 | `/api/chat/*` |
| 4.13.3 Tool 调用框架 | 搜索文章、获取文章详情、调用外部 API | `backend/app/chat/tools.py` |
| 4.13.4 引用链接解析 | 从 AI 输出提取标记并映射链接 | `backend/app/chat/references.py` |
| 4.13.5 聊天前端 | 对话界面、引用渲染 | `ChatView.vue` |
#### Week 14:工具与产出集成
| 任务 | 说明 | 产出 |
|------|------|------|
| 4.14.1 外部 API Tool | 调用用户配置的 HTTP API | `fetch_external_api` tool |
| 4.14.2 产出导出 | Markdown、JSON、邮件 | `backend/app/services/exporters.py` |
| 4.14.3 聊天中运行 Skill | 用户选择 Skill 进行专项对话 | Skill selector |
| 4.14.4 会话上下文管理 | 窗口大小、历史摘要 | Context manager |
| 4.14.5 集成测试 | 端到端聊天流程 | `tests/test_chat.py` |
### 阶段三交付物
- [ ] Skill 系统(CRUD + 默认 Skills
- [ ] 可配置的日报任务系统
- [ ] 聊天窗口(支持 Tool 调用和引用链接)
- [ ] 外部 API Tool
### 阶段三里程碑
**M3:平台具备 AI 产出能力,日报和聊天均可调用 Skills 生成带引用链接的内容。**
---
## 五、阶段四:自优化与工业化(Week 15-18)
### 目标
实现每日凌晨 2 点自优化、去重算法自优化、监控、备份、日志。
### 任务清单
#### Week 15:自优化调度器
| 任务 | 说明 | 产出 |
|------|------|------|
| 5.15.1 自优化数据收集 | 收集最近执行样例、历史优化记录 | `backend/app/optimization/collector.py` |
| 5.15.2 Prompt/Skill 优化器 | 用 AI 评审并生成候选 Prompt | `backend/app/optimization/prompt_optimizer.py` |
| 5.15.3 优化器自评逻辑 | 候选 vs 当前版本评分 | 评估服务 |
| 5.15.4 自动发布机制 | 保存新版本、自动生效 | 发布服务 |
| 5.15.5 优化日志 | `optimization_logs` 表 + API | 留痕 |
#### Week 16:去重算法自优化
| 任务 | 说明 | 产出 |
|------|------|------|
| 5.16.1 去重算法优化器 | 分析样例生成候选算法代码 | `backend/app/optimization/dedup_optimizer.py` |
| 5.16.2 算法版本备份 | 自动生成 `.bak` | 版本管理 |
| 5.16.3 算法热加载与回滚 | 失败自动回滚 | 插件加载器增强 |
| 5.16.4 算法性能评估 | 运行时间、内存、误判漏判 | 评估服务 |
| 5.16.5 手动回滚 API | `/api/admin/deduplication/rollback` | 管理接口 |
#### Week 17:监控与可观测性
| 任务 | 说明 | 产出 |
|------|------|------|
| 5.17.1 Prometheus 指标 | 任务数、AI 调用数、延迟、失败率 | `/metrics` |
| 5.17.2 Grafana 仪表盘 | 系统状态、任务状态、AI 成本 | `docker/grafana/` |
| 5.17.3 Sentry 集成 | 错误追踪 | 配置 |
| 5.17.4 日志聚合 | Loki 或文件日志 | 日志配置 |
| 5.17.5 告警规则 | 任务失败、AI 调用异常 | Alert rules |
#### Week 18:备份、安全与部署
| 任务 | 说明 | 产出 |
|------|------|------|
| 5.18.1 PostgreSQL 自动备份 | 每日备份、保留策略 | `scripts/backup_db.sh` |
| 5.18.2 对象存储备份 | 插件、导出产物备份 | 备份脚本 |
| 5.18.3 安全加固 | API 限流、密码策略、敏感配置加密 | 安全文档 |
| 5.18.4 生产 Docker Compose | 多 Worker 配置 | `docker-compose.prod.yml` |
| 5.18.5 部署文档 | 完整部署步骤 | `docs/deployment.md` |
### 阶段四交付物
- [ ] 每日 2:00 自优化调度器
- [ ] 去重算法自优化 + 版本回滚
- [ ] Prometheus + Grafana 监控
- [ ] 自动备份方案
- [ ] 生产部署文档
### 阶段四里程碑
**M4:平台具备工业化能力,可无人值守运行并自动优化。**
---
## 六、阶段五:规模化与持续优化(Week 19+)
### 目标
根据实际数据量和负载进行性能优化和架构扩展。
### 任务清单
| 任务 | 说明 | 时机 |
|------|------|------|
| 6.1 迁移到 OpenSearch | 当 PG tsvector 性能不足时 | 10万+ 文章 |
| 6.2 向量检索优化 | 使用专用向量库(Qdrant/Milvus | 需要语义检索时 |
| 6.3 去重算法升级 | LSH/MinHash/Embedding | 日增 5000+ 时 |
| 6.4 数据库读写分离 | 主从复制 | 读压力高时 |
| 6.5 按时间分库 | 历史数据归档 | 50万+ 文章 |
| 6.6 服务拆分 | 拆分为 feed-service、ai-service 等 | 团队扩大时 |
| 6.7 缓存层优化 | Redis 缓存热门查询、文章 | 读压力大时 |
| 6.8 AI 调用成本优化 | 缓存 Embedding、批量调用、模型降级 | AI 成本高时 |
---
## 七、关键依赖清单
### 7.1 Python 后端
```txt
fastapi==0.115.0
uvicorn[standard]==0.30.0
sqlalchemy[asyncio]==2.0.31
asyncpg==0.29.0
alembic==1.13.2
psycopg2-binary==2.9.9
celery==5.4.0
redis==5.0.7
pydantic==2.8.2
pydantic-settings==2.3.4
python-jose[cryptography]==3.3.0
passlib[bcrypt]==1.7.4
python-multipart==0.0.9
httpx==0.27.0
feedparser==6.0.11
beautifulsoup4==4.12.3
lxml==5.2.2
scikit-learn==1.5.1
numpy==1.26.4
openai==1.35.0
litellm==1.41.0
langdetect==1.0.9
watchdog==4.0.1
prometheus-client==0.20.0
sentry-sdk==2.7.0
pytest==8.2.2
pytest-asyncio==0.23.7
```
### 7.2 前端
```json
{
"vue": "^3.4.0",
"vue-router": "^4.3.0",
"pinia": "^2.1.0",
"element-plus": "^2.7.0",
"axios": "^1.7.0",
"typescript": "^5.4.0",
"marked": "^13.0.0",
"dompurify": "^3.1.0"
}
```
### 7.3 基础设施
| 组件 | 版本 | 用途 |
|------|------|------|
| PostgreSQL | 16+ | 主数据库 |
| Redis | 7+ | 缓存、锁、消息队列 |
| MinIO | latest | 对象存储 |
| Prometheus | latest | 指标采集 |
| Grafana | latest | 监控仪表盘 |
---
## 八、测试策略
### 8.1 单元测试
| 模块 | 测试重点 |
|------|----------|
| `plugins/deduplication` | URL/标题/内容去重、代表文章选择 |
| `app/services/normalizer` | URL 规范化、HTML 清洗 |
| `app/ai/client` | 多 Provider 路由、Fallback |
| `app/skills/loader` | Skill 解析、Schema 校验 |
| `app/chat/references` | 引用标记解析与链接映射 |
| `app/services/lock_service` | 锁获取/释放/超时 |
### 8.2 集成测试
| 模块 | 测试重点 |
|------|----------|
| `/api/feeds` | CRUD、抓取触发 |
| `/api/tasks/deduplicate` | 去重任务全流程 |
| `/api/chat/sessions` | 创建会话、发送消息 |
| `/api/output-tasks` | 创建任务、手动运行 |
| `/api/admin/deduplication/rollback` | 算法回滚 |
### 8.3 端到端测试
- 发布 RSS → 抓取 → 清洗 → 去重 → AI 处理 → 日报生成
- 聊天中提问 → 检索文章 → AI 回答 → 验证引用链接
---
## 九、里程碑与验收标准
| 里程碑 | 时间 | 验收标准 |
|--------|------|----------|
| M1 基础骨架 | Week 5 | `docker-compose up` 可运行;可管理 Feed;可查看文章列表;JWT 鉴权可用 |
| M2 核心流程 | Week 10 | 一条 RSS 文章能自动完成:抓取→清洗→去重→AI 摘要/分类/Tag/打分 |
| M3 产出与聊天 | Week 14 | 可创建日报任务并生成日报;可在聊天中提问并获得带引用链接的回答 |
| M4 自优化与工业化 | Week 18 | 每日 2:00 自优化成功执行并留痕;去重算法可热加载和回滚;监控可用 |
| M5 规模化 | 持续 | 根据数据量完成 OpenSearch/分库等扩展 |
---
## 十、风险与应对
| 风险 | 阶段 | 影响 | 应对 |
|------|------|------|------|
| SQLite → PostgreSQL 迁移复杂 | 阶段一 | 高 | 编写迁移脚本 + 数据校验 + 保留旧系统 |
| Celery 任务状态丢失 | 阶段二 | 中 | 使用 Redis 持久化 + 任务结果 backend |
| 去重插件热加载失败 | 阶段二/四 | 高 | 失败自动回滚上一个 `.bak` |
| AI 自优化产生劣质结果 | 阶段四 | 中 | 优化器自评 + 版本化 + 不自动删除旧版本 |
| AI 调用成本高 | 全程 | 中 | 多供应商路由 + Fallback + 结果缓存 |
| 前端 TypeScript 迁移成本 | 阶段一 | 低 | 新平台前端直接用 TS,旧前端代码逐步重写 |
| 数据量增长超预期 | 阶段五 | 中 | 分区表 + 预留 OpenSearch/向量库扩展路径 |
---
## 十一、交付文档清单
| 文档 | 负责阶段 | 状态 |
|------|----------|------|
| 本开发步骤文档 | 全程 | ✅ |
| 架构设计文档 | 全程 | ✅ `rss-platform-design.md` |
| API 接口详细文档 | 阶段一~三 | 待编写 |
| Skill 开发指南 | 阶段三 | 待编写 |
| 自优化机制说明 | 阶段四 | 待编写 |
| Docker 部署手册 | 阶段一/四 | 待编写 |
| 数据迁移手册 | 阶段一 | 待编写 |
| 运维监控手册 | 阶段四 | 待编写 |
---
## 十二、后续建议
1. **先验证核心假设**:在阶段二结束前,用真实 RSS 源跑一周,观察去重效果和 AI 输出质量。
2. **Prompt 工程优先于自优化**:初期先人工调优 Prompt,阶段四再引入自优化。
3. **保留旧系统并行运行**:直到阶段三结束,旧 rssKeeper + dataClean 可继续服务,降低切换风险。
4. **建立反馈闭环**:即使不自优化,也要先收集用户对 AI 产出的反馈数据。
5. **控制 AI 成本**:为每个任务设置预算上限和模型降级策略。
---
## 十三、快速启动命令(预期)
```bash
# 1. 克隆项目
cd /home/congsh/workspace/dev
git clone <new-repo-url> rss-platform
cd rss-platform
# 2. 启动基础设施
docker-compose -f docker-compose.dev.yml up -d postgres redis minio
# 3. 初始化数据库
cd backend
alembic upgrade head
python scripts/migrate_from_sqlite.py \
--rsskeeper-db /path/to/rsskeeper.db \
--dataclean-db /path/to/dataclean.db
# 4. 启动后端
uvicorn main:app --reload --port 8000
# 5. 启动前端
cd ../frontend
npm install
npm run dev
# 6. 启动 Celery Worker
cd ../backend
celery -A app.tasks worker -Q default,fetch,ai -l info
celery -A app.tasks beat -l info
```
---
*本文档与 `rss-platform-design.md` 配套使用,开发过程中应根据实际情况迭代更新。*