113 lines
3.5 KiB
Markdown
113 lines
3.5 KiB
Markdown
# 消息回复与私聊功能补充计划
|
||
|
||
## 检测目标
|
||
检测"消息回复"和"私聊"两个模块是否还有需要补充的部分
|
||
|
||
---
|
||
|
||
## 当前实现状态
|
||
|
||
### ✅ 已实现
|
||
|
||
#### 消息回复(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. 检查移动端聊天,确认表情/长按菜单可用
|