feat: 添加消息历史持久化和可视化查看功能
- 新增 messageStore.js 消息存储模块,支持自动保存所有收发消息 - 修改 main.js,在消息转发时自动记录到本地存储 - 修改 preload.js,暴露消息管理 IPC API - 修改 App.js,添加消息历史查看界面 - 统计信息面板(总数/接收/发送/会话数) - 会话列表和消息详情 - 搜索、过滤、分页功能 - 导出 JSON 和清空历史 - 新增完整文档(MESSAGE_HISTORY.md 等) - 新增测试脚本 test-message-history.js 版本:v1.0.1
This commit is contained in:
217
CHANGELOG_MESSAGE_HISTORY.md
Normal file
217
CHANGELOG_MESSAGE_HISTORY.md
Normal file
@@ -0,0 +1,217 @@
|
||||
# 消息历史功能 - 更新说明
|
||||
|
||||
## 更新日期
|
||||
2026-03-10
|
||||
|
||||
## 版本
|
||||
v1.0.1 (消息历史功能)
|
||||
|
||||
## 更新内容
|
||||
|
||||
### 新增文件
|
||||
|
||||
1. **electron/messageStore.js** (新增)
|
||||
- 消息持久化存储核心模块
|
||||
- 支持消息的增删改查
|
||||
- 自动管理消息数量(默认最多 10,000 条)
|
||||
- 支持搜索、过滤、导出功能
|
||||
|
||||
2. **MESSAGE_HISTORY.md** (新增)
|
||||
- 完整的功能使用说明文档
|
||||
- 包含技术实现细节
|
||||
- API 参考和配置说明
|
||||
|
||||
3. **test-message-history.js** (新增)
|
||||
- 自动化测试脚本
|
||||
- 验证所有组件是否正确集成
|
||||
|
||||
### 修改文件
|
||||
|
||||
1. **electron/main.js**
|
||||
- 引入 messageStore 模块
|
||||
- 在 `forwardMessageToOpenClaw()` 中添加消息记录(WeCom → OpenClaw)
|
||||
- 在 `forwardMessageToWeCom()` 中添加消息记录(OpenClaw → WeCom)
|
||||
- 新增 IPC 处理器:
|
||||
- `get-messages` - 获取消息列表
|
||||
- `get-sessions` - 获取会话列表
|
||||
- `search-messages` - 搜索消息
|
||||
- `get-message-stats` - 获取统计数据
|
||||
- `mark-messages-read` - 标记已读
|
||||
- `export-messages` - 导出消息
|
||||
- `clear-messages` - 清空消息
|
||||
|
||||
2. **electron/preload.js**
|
||||
- 暴露消息管理 API 给渲染进程:
|
||||
- `getMessages()`
|
||||
- `getSessions()`
|
||||
- `searchMessages()`
|
||||
- `getMessageStats()`
|
||||
- `markMessagesRead()`
|
||||
- `exportMessages()`
|
||||
- `clearMessages()`
|
||||
|
||||
3. **renderer/src/App.js**
|
||||
- 新增状态管理:
|
||||
- `showMessageHistory` - 控制消息历史模态框显示
|
||||
- `messages` - 消息列表
|
||||
- `sessions` - 会话列表
|
||||
- `messageStats` - 统计数据
|
||||
- `searchQuery` - 搜索关键词
|
||||
- `messageFilter` - 过滤条件
|
||||
- `messagePage` - 分页信息
|
||||
- 新增功能函数:
|
||||
- `loadMessages()` - 加载消息
|
||||
- `loadSessions()` - 加载会话
|
||||
- `loadMessageStats()` - 加载统计
|
||||
- `handleSearchMessages()` - 搜索消息
|
||||
- UI 更新:
|
||||
- 头部新增"💬 消息历史"按钮
|
||||
- 新增消息历史模态框(包含会话列表、消息列表、搜索过滤、分页等)
|
||||
- 新增统计信息展示面板
|
||||
- 事件监听:
|
||||
- 收到新消息时自动刷新消息历史(如果已打开)
|
||||
|
||||
## 功能特性
|
||||
|
||||
### ✅ 自动保存
|
||||
- 所有从企业微信收到的消息自动保存
|
||||
- 所有发送到企业微信的回复自动保存
|
||||
- 支持文本、图片、文件、语音等消息类型
|
||||
|
||||
### ✅ 实时查看
|
||||
- 点击"💬 消息历史"按钮即可查看
|
||||
- 左侧显示会话列表
|
||||
- 右侧显示消息详情
|
||||
- 新消息自动刷新
|
||||
|
||||
### ✅ 搜索过滤
|
||||
- 全文搜索消息内容
|
||||
- 按方向过滤(接收/发送)
|
||||
- 按来源过滤(WeCom/OpenClaw)
|
||||
- 按会话筛选
|
||||
|
||||
### ✅ 数据统计
|
||||
- 总消息数
|
||||
- 接收/发送消息数
|
||||
- 会话数量
|
||||
- 今日/昨日消息数
|
||||
|
||||
### ✅ 数据管理
|
||||
- 导出为 JSON 文件
|
||||
- 清空历史记录
|
||||
- 分页浏览
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 启动应用
|
||||
|
||||
```bash
|
||||
cd ~/.openclaw/workspace/wecome-openclaw-client
|
||||
|
||||
# 如果还没安装依赖
|
||||
npm install
|
||||
cd renderer && npm install && cd ..
|
||||
|
||||
# 启动应用
|
||||
npm start
|
||||
```
|
||||
|
||||
### 查看消息历史
|
||||
|
||||
1. 启动客户端应用
|
||||
2. 点击右上角的 **💬 消息历史** 按钮
|
||||
3. 查看消息列表和统计信息
|
||||
4. 使用搜索和过滤功能查找特定消息
|
||||
5. 可导出 JSON 备份或清空历史
|
||||
|
||||
## 数据存储
|
||||
|
||||
### 存储位置
|
||||
|
||||
- **Linux**: `~/.config/wecome-openclaw-client/messages/messages.json`
|
||||
- **Windows**: `%APPDATA%\wecome-openclaw-client\messages\messages.json`
|
||||
- **macOS**: `~/Library/Application Support/wecome-openclaw-client/messages/messages.json`
|
||||
|
||||
### 数据格式
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "msg_1710057600000_abc123",
|
||||
"timestamp": "2026-03-10T12:00:00.000Z",
|
||||
"direction": "inbound",
|
||||
"source": "wecom",
|
||||
"sessionId": "bot123:chat456",
|
||||
"chatId": "chat456",
|
||||
"senderId": "zhangsan",
|
||||
"senderName": "张三",
|
||||
"messageType": "text",
|
||||
"content": "消息内容",
|
||||
"attachments": [],
|
||||
"metadata": {},
|
||||
"delivered": true,
|
||||
"read": false
|
||||
}
|
||||
```
|
||||
|
||||
## 兼容性
|
||||
|
||||
- ✅ 向后兼容:不影响现有功能
|
||||
- ✅ 无需迁移:新消息自动开始保存
|
||||
- ✅ 可选功能:不使用不影响其他功能
|
||||
|
||||
## 性能影响
|
||||
|
||||
- **存储性能**: 异步写入,不阻塞主线程
|
||||
- **内存占用**: 每次加载最多 50 条消息(分页)
|
||||
- **磁盘空间**: 纯文本消息约 1KB/条,含附件会更大
|
||||
- **自动清理**: 超过 10,000 条自动删除最旧消息
|
||||
|
||||
## 测试验证
|
||||
|
||||
运行测试脚本验证安装:
|
||||
|
||||
```bash
|
||||
node test-message-history.js
|
||||
```
|
||||
|
||||
预期输出:
|
||||
```
|
||||
============================================================
|
||||
消息存储功能测试
|
||||
============================================================
|
||||
✓ 测试 1: 检查 messageStore.js
|
||||
✅ messageStore.js 存在
|
||||
✓ 测试 2: 检查 main.js 是否引入 messageStore
|
||||
✅ main.js 已引入 messageStore
|
||||
...
|
||||
============================================================
|
||||
✅ 所有测试通过!
|
||||
============================================================
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **首次使用**: 首次打开消息历史时,如果没有消息会显示"暂无消息"
|
||||
2. **媒体文件**: 附件路径保存在消息记录中,删除媒体文件会导致附件无法查看
|
||||
3. **隐私安全**: 导出的 JSON 包含所有消息内容,请妥善保管
|
||||
4. **清空操作**: 清空历史不可恢复,请谨慎操作
|
||||
|
||||
## 后续优化计划
|
||||
|
||||
- [ ] 支持按时间范围筛选
|
||||
- [ ] 支持消息详情查看(点击查看完整元数据)
|
||||
- [ ] 支持媒体文件预览
|
||||
- [ ] 支持消息标记(星标、标签等)
|
||||
- [ ] 支持批量操作(批量删除、批量导出)
|
||||
- [ ] 支持数据库存储(SQLite)替代 JSON 文件
|
||||
- [ ] 支持消息同步(多设备)
|
||||
|
||||
## 技术支持
|
||||
|
||||
如有问题或建议,请联系:
|
||||
- 邮箱:sales@toncent.com.cn
|
||||
- 项目地址:http://192.168.1.191:23000/toncent/wecome-openclaw-client.git
|
||||
|
||||
---
|
||||
|
||||
**更新完成!** 🎉
|
||||
Reference in New Issue
Block a user