# 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.2：API 增强与安全

### 目标
增强 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.4：AI 集成

### 目标
实现 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 | 创建文档 |
