Files
vscode-workbench/.trae/documents/messages-chat-supplement-plan.md
T

113 lines
3.5 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.
# 消息回复与私聊功能补充计划
## 检测目标
检测"消息回复"和"私聊"两个模块是否还有需要补充的部分
---
## 当前实现状态
### ✅ 已实现
#### 消息回复(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/<pk>/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/<pk>/clear/
```
- 验证用户是会话参与者
- 删除该会话下所有 `ChatMessage`
- 可选:同时清空对方的消息(仅当前用户视图 vs 物理删除)
- 前端二次确认弹窗
### 清空所有消息通知
```
DELETE /messages/clear/?type=reply (可选 type 参数)
```
- 删除当前用户某类型或全部 `Message` 记录
- 删除关联的 `SystemMessageRead` 记录
- 前端二次确认弹窗
---
## 验证步骤
1. 在私聊中点击"清空聊天记录",确认会话消息被清空
2. 刷新页面,确认聊天记录不再显示
3. 在消息页面点击"清空全部",确认消息列表被清空
4. 检查移动端聊天,确认表情/长按菜单可用