# 消息回复与私聊功能补充计划 ## 检测目标 检测"消息回复"和"私聊"两个模块是否还有需要补充的部分 --- ## 当前实现状态 ### ✅ 已实现 #### 消息回复(Messages) | 模块 | 状态 | |------|------| | 后端模型 | `Message`(回复/@我/点赞)、`SystemMessage`(系统通知) | | 后端 API | 列表获取、未读计数、标记已读、全部已读、删除消息、系统消息详情 | | 前端 | `Messages.tsx`(四标签页:回复/@我/点赞/系统) | | 移动端 | `MessagesMobile.tsx`(独立移动版) | #### 私聊(Chat) | 模块 | 状态 | |------|------| | 后端模型 | `FriendRequest`、`Friendship`、`Conversation`、`ChatMessage`、`FavoriteSticker` | | WebSocket | Django Channels + `ChatConsumer`(实时消息、打字状态、在线状态、已读回执) | | 后端 API | 好友请求(发送/接受/拒绝/取消)、好友列表、用户搜索、会话管理、消息发送/撤回、文件上传、表情管理 | | 前端 | `Chat.tsx`(WebSocket 实时通信、回复引用、表情/贴纸选择器、右键菜单、消息撤回) | | 移动端 | `ChatMobile.tsx`(基础聊天功能) | --- ### ❌ 需要补充的功能 #### 1. 清空聊天记录(私聊会话) **现状**:用户无法清除某个会话的聊天历史,也无法清空所有聊天记录。 **影响文件**: | 文件 | 修改内容 | |------|----------| | `chat/views.py` | 新增 `ConversationClearView`(DELETE 会话的所有消息) | | `chat/urls.py` | 新增路由 `conversations//clear/` | | `Chat.tsx` | 会话菜单/标题栏添加"清空聊天记录"按钮 | | `Chat.css` | 弹窗确认样式 | #### 2. 一键清空所有消息通知 **现状**:消息页面只有"全部标为已读",没有"全部删除/清空"。 **影响文件**: | 文件 | 修改内容 | |------|----------| | `message/views.py` | 新增 `MessageClearAllView`(删除某类型或全部消息) | | `message/urls.py` | 新增路由 `clear/` | | `Messages.tsx` | 顶部操作区添加"清空全部"按钮 | | `MessagesMobile.tsx` | 同步添加 | #### 3. 移动端聊天功能增强 **现状**:`ChatMobile.tsx` 仅支持纯文本发送,缺少表情、贴纸、文件上传、回复引用等。 **影响文件**: | 文件 | 修改内容 | |------|----------| | `ChatMobile.tsx` | 添加表情选择器(简化版)、长按菜单(复制/撤回/删除)、图片消息展示 | | `ChatMobile.css` | 适配新组件样式 | --- ## 推荐优先级 | 优先级 | 功能 | 原因 | |--------|------|------| | P0 | 清空聊天记录 | 用户主动要求,隐私/数据管理的基本需求 | | P1 | 一键清空消息通知 | 与消息清空配套,完整的数据管理 | | P2 | 移动端聊天增强 | 移动端体验补全 | --- ## 实现方案概要 ### 清空聊天记录(私聊) ``` DELETE /chat/conversations//clear/ ``` - 验证用户是会话参与者 - 删除该会话下所有 `ChatMessage` - 可选:同时清空对方的消息(仅当前用户视图 vs 物理删除) - 前端二次确认弹窗 ### 清空所有消息通知 ``` DELETE /messages/clear/?type=reply (可选 type 参数) ``` - 删除当前用户某类型或全部 `Message` 记录 - 删除关联的 `SystemMessageRead` 记录 - 前端二次确认弹窗 --- ## 验证步骤 1. 在私聊中点击"清空聊天记录",确认会话消息被清空 2. 刷新页面,确认聊天记录不再显示 3. 在消息页面点击"清空全部",确认消息列表被清空 4. 检查移动端聊天,确认表情/长按菜单可用