Files
JARVIS/development-doc/plan/forum-update/checklist.md

306 lines
7.7 KiB
Markdown
Raw 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.
# Forum 升级执行清单
本清单用于追踪 Forum 升级计划的执行进度。
---
## 总进度
| Phase | 名称 | 状态 | 工作量 |
|-------|------|------|--------|
| F.0 | 现状与目标 | ✅ 完成 | - |
| F.1 | 数据模型升级 | ⬜ 待开始 | 2 天 |
| F.2 | API 增强与安全 | ⬜ 待开始 | 3 天 |
| F.3 | 权限系统 | ⬜ 待开始 | 3 天 |
| F.4 | AI 集成 | ⬜ 待开始 | 5 天 |
| **总计** | | | **13 天** |
---
## Phase F.1:数据模型升级
### 目标
升级 Forum 数据模型,支持多板块、标签系统、帖子元数据扩展。
### 任务清单
#### 数据库迁移
- [ ] 创建数据库迁移脚本
- 新增 `forum_boards`
- 新增 `forum_tags`
- 新增 `forum_post_tags`
- 新增 `forum_likes`
- 新增 `forum_stats`
- 扩展 `forum_posts`
- 扩展 `forum_replies`
#### 模型实现
- [ ] 扩展 `models/forum.py`
- [ ] 创建 `ForumBoard` 模型
- [ ] 创建 `ForumTag` 模型
- [ ] 创建 `ForumPostTag` 模型
- [ ] 创建 `ForumLike` 模型
- [ ] 创建 `ForumStats` 模型
- [ ] 扩展 `ForumPost` 字段
- [ ] 扩展 `ForumReply` 字段
#### Schema 实现
- [ ] 扩展 `schemas/forum.py`
- [ ] 创建 `ForumBoardCreate/Out` Schema
- [ ] 扩展 `ForumPostCreate/Out` Schema
- [ ] 扩展 `ForumReplyCreate/Out` Schema
- [ ] 创建 `ForumTagOut` Schema
#### 测试
- [ ] 编写单元测试
- [ ] 测试 ForumBoard CRUD
- [ ] 测试 ForumTag CRUD
- [ ] 测试 ForumLike 功能
- [ ] 测试 ForumStats 更新
### 产出文件
- `models/forum.py`
- `schemas/forum.py`
### 验收
- [ ] 迁移脚本可正常运行
- [ ] 所有新模型可正常创建
- [ ] Schema 验证正常工作
- [ ] 单元测试通过
---
## Phase F.2API 增强与安全
### 目标
增强 Forum API 功能,实现文件锁、输入验证、限流、缓存。
### 任务清单
#### 基础服务
- [ ] 创建 `services/forum_service.py`
- [ ] 实现 `ForumLockManager`
- [ ] 实现 `ForumService`
- [ ] 实现板块 CRUD 方法
- [ ] 实现帖子 CRUD 方法
- [ ] 实现回复 CRUD 方法
- [ ] 实现点赞方法
#### 安全机制
- [ ] 实现输入验证
- [ ] 实现 `sanitize_input` 函数
- [ ] 实现 `validate_post_data` 函数
- [ ] 实现配置常量
- [ ] 实现限流器
- [ ] 实现 `RateLimiter`
- [ ] 集成发帖限流
- [ ] 集成回复限流
- [ ] 实现缓存
- [ ] 实现 `ForumCache`
- [ ] 实现帖子缓存
- [ ] 实现标签缓存
#### API 端点
- [ ] 扩展 `routers/forum.py`
- [ ] GET `/boards` - 列出板块
- [ ] POST `/boards` - 创建板块
- [ ] GET `/posts` - 分页获取帖子
- [ ] POST `/posts` - 创建帖子
- [ ] PATCH `/posts/{id}/pin` - 置顶
- [ ] PATCH `/posts/{id}/lock` - 锁定
- [ ] GET `/tags` - 列出/搜索标签
- [ ] POST `/posts/{id}/tags` - 添加标签
- [ ] POST `/like` - 切换点赞
#### 测试
- [ ] 编写单元测试
- [ ] 测试 ForumLockManager
- [ ] 测试输入验证
- [ ] 测试限流器
- [ ] 测试 API 端点
### 产出文件
- `services/forum_service.py`
### 验收
- [ ] 并发锁正常工作
- [ ] 输入验证可过滤危险字符
- [ ] 限流正常工作
- [ ] 缓存提升读取速度
- [ ] 所有 API 端点正常
- [ ] 单元测试通过
---
## Phase F.3:权限系统
### 目标
实现用户角色管理、板块权限控制、操作日志、积分系统。
### 任务清单
#### 用户扩展
- [ ] 扩展 `models/user.py`
- [ ] 添加 `role` 字段
- [ ] 添加 `forum_score` 字段
- [ ] 添加论坛统计字段
- [ ] 添加禁言相关字段
- [ ] 添加 `moderated_boards` 字段
#### 权限服务
- [ ] 创建 `services/permission_service.py`
- [ ] 实现 `UserRole` 枚举
- [ ] 实现 `Permission` 枚举
- [ ] 实现 `ROLE_PERMISSIONS` 映射
- [ ] 实现 `PermissionService`
- [ ] 实现 `has_permission` 方法
- [ ] 实现 `can_edit_post` 方法
- [ ] 实现 `can_delete_post` 方法
- [ ] 实现 `ban_user` 方法
- [ ] 实现 `unban_user` 方法
#### 日志系统
- [ ] 扩展 `models/forum.py`
- [ ] 创建 `ForumLog` 模型
- [ ] 集成日志记录
- [ ] 记录帖子操作
- [ ] 记录回复操作
- [ ] 记录用户操作
#### 积分服务
- [ ] 创建 `services/score_service.py`
- [ ] 实现 `SCORE_RULES` 配置
- [ ] 实现 `ScoreService`
- [ ] 实现 `add_score` 方法
- [ ] 实现 `get_leaderboard` 方法
- [ ] 实现积分自动增减
#### 管理 API
- [ ] 扩展 `routers/forum.py`
- [ ] POST `/admin/ban/{user_id}` - 禁言
- [ ] POST `/admin/unban/{user_id}` - 解除禁言
- [ ] GET `/admin/logs` - 查看日志
- [ ] GET `/leaderboard` - 积分排行榜
#### 测试
- [ ] 编写单元测试
- [ ] 测试权限检查
- [ ] 测试禁言功能
- [ ] 测试积分计算
- [ ] 测试排行榜
### 产出文件
- `models/user.py`
- `models/forum.py` (ForumLog)
- `services/permission_service.py`
- `services/score_service.py`
### 验收
- [ ] 角色权限正确控制
- [ ] 禁言功能正常
- [ ] 操作日志正确记录
- [ ] 积分正确增减
- [ ] 排行榜正确排序
- [ ] 单元测试通过
---
## Phase F.4AI 集成
### 目标
实现 AI 自动回复、摘要生成、智能打标、Agent 自主发帖。
### 任务清单
#### AI 服务
- [ ] 创建 `services/forum_ai_service.py`
- [ ] 实现 `ForumAIConfig` 配置
- [ ] 实现 `ForumAIService`
- [ ] 实现 `generate_auto_reply` 方法
- [ ] 实现 `_should_auto_reply` 判断
- [ ] 实现 `generate_summary` 方法
- [ ] 实现 `suggest_tags` 方法
- [ ] 实现 `classify_category` 方法
#### 摘要服务
- [ ] 创建 `services/summary_service.py`
- [ ] 实现 `SummaryService`
- [ ] 实现 `get_post_summary` 方法
- [ ] 实现 `get_thread_summary` 方法
- [ ] 实现缓存失效
#### Agent 工具
- [ ] 创建 `agents/tools/forum_tools.py`
- [ ] 实现 `create_forum_post` 工具
- [ ] 实现 `reply_to_post` 工具
- [ ] 实现 `search_forum_posts` 工具
- [ ] 实现 `get_forum_trending` 工具
- [ ] 创建 `agents/prompts/forum_agent.py`
- [ ] 编写 Forum Agent 提示词
- [ ] 配置工具列表
#### 定时任务
- [ ] 创建 `tasks/forum_auto_reply.py`
- [ ] 实现 `auto_reply_task` 函数
- [ ] 实现 `setup_forum_scheduler` 函数
#### API 端点
- [ ] 扩展 `routers/forum.py`
- [ ] POST `/posts/{id}/generate-summary` - 生成摘要
- [ ] POST `/posts/suggest-tags` - 推荐标签
- [ ] POST `/posts/classify` - 分类帖子
- [ ] GET `/posts/{id}/ai-status` - AI 状态
#### 测试
- [ ] 编写单元测试
- [ ] 测试自动回复生成
- [ ] 测试摘要生成
- [ ] 测试智能打标
- [ ] 测试 API 端点
### 产出文件
- `services/forum_ai_service.py`
- `services/summary_service.py`
- `agents/tools/forum_tools.py`
- `agents/prompts/forum_agent.py`
- `tasks/forum_auto_reply.py`
### 验收
- [ ] AI 服务正常调用
- [ ] 自动回复正常生成
- [ ] 摘要生成正常
- [ ] 智能打标推荐
- [ ] 智能分类推荐
- [ ] Agent 工具可用
- [ ] 定时任务正常执行
- [ ] 单元测试通过
---
## 完成标准
- [ ] 所有 Phase F.1-F.4 任务完成
- [ ] 所有单元测试通过
- [ ] API 文档更新完成
- [ ] 用户文档更新完成
- [ ] 部署验证通过
---
## 风险与注意事项
| 风险 | 影响 | 缓解措施 |
|------|------|----------|
| F.4 AI 调用成本高 | 费用增加 | 设置每日调用上限 |
| 并发锁死锁 | 服务不可用 | 超时机制 + 定期清理 |
| 迁移数据丢失 | 用户流失 | 备份 + 分阶段迁移 |
| Agent 刷屏 | 用户体验下降 | 严格限流 + 人工审核 |
---
## 更新日志
| 日期 | Phase | 变更内容 |
|------|-------|----------|
| 2026-04-04 | F.0 | 创建文档 |