# 统一消息系统开发任务清单

## 1. 基础设施与数据库准备
- [ ] **MinIO 服务部署**
    - [ ] 编写 docker-compose.yml 增加 MinIO 服务配置
    - [ ] 配置 MinIO 的 Access Key 和 Secret Key
    - [ ] 创建默认 Bucket (`messages`) 并设置访问策略
- [ ] **数据库变更**
    - [ ] 执行 `V3__add_message_system.sql` 脚本
    - [ ] 验证 `messages` 和 `user_devices` 表结构是否正确
    - [ ] 验证 `app_user_mapping` 表是否存在（用于第三方账号映射）

## 2. 后端核心模块开发 (Backend)
- [ ] **MinIO 客户端封装**
    - [ ] 实现 `backend/app/core/minio.py` 工具类
    - [ ] 实现文件上传方法 (`put_object`)
    - [ ] 实现预签名 URL 生成方法 (`get_presigned_url`)
- [ ] **WebSocket 服务实现**
    - [ ] 实现 `ConnectionManager` 类 (管理连接/断开/广播)
    - [ ] 实现 `/api/v1/ws/messages` 端点
    - [ ] 实现 JWT Token 鉴权逻辑 (`get_user_from_token`)
- [ ] **消息模型与 Schema 定义**
    - [ ] 更新 `backend/app/models/message.py`
    - [ ] 定义 Pydantic Schema (`MessageCreate`, `MessageResponse`)
    - [ ] 处理多媒体内容 (`content_type`) 的 JSON 序列化/反序列化

## 3. API 接口开发 (API Endpoints)
- [ ] **消息发送接口 (`POST /messages`)**
    - [ ] 实现用户发送私信逻辑 (校验接收者)
    - [ ] 实现应用发送通知逻辑 (校验 App 签名)
    - [ ] 实现 `app_user_id` 到 `user_id` 的自动映射查找
    - [ ] 集成 WebSocket 实时推送 (异步任务)
- [ ] **消息查询接口**
    - [ ] 实现会话列表聚合接口 (`GET /conversations`)
    - [ ] 实现历史消息分页接口 (`GET /history/{id}`)
    - [ ] 实现未读数统计与标记已读接口
- [ ] **文件上传与 SSO**
    - [ ] 实现附件上传接口 (`POST /upload`)
    - [ ] 实现 SSO 跳转中转接口 (`GET /auth/sso/jump`)

## 4. 客户端 SDK/前端集成 (Frontend)
- [ ] **WebSocket 客户端封装**
    - [ ] 实现断线重连机制
    - [ ] 实现心跳保活 (Ping/Pong)
- [ ] **UI 组件开发**
    - [ ] 开发会话列表组件 (展示未读红点、最后一条消息)
    - [ ] 开发聊天窗口组件 (支持 Text/Image/File 渲染)
- [ ] **业务逻辑对接**
    - [ ] 对接文件上传流程 (上传 -> 拿 Key -> 发消息)
    - [ ] 处理通知点击跳转 (拦截 URL -> 自动登录)

## 5. 测试与文档
- [ ] **单元测试**
    - [ ] 编写 API 接口测试用例 (Pytest)
    - [ ] 模拟 WebSocket 连接测试
- [ ] **集成测试**
    - [ ] 验证第三方应用通过 API 发送通知的全流程
    - [ ] 验证 MinIO 文件上传下载流程
