Files
wecome-openclaw-client/CHANGELOG_MESSAGE_HISTORY.md
徐总 0880813355 feat: 添加消息历史持久化和可视化查看功能
- 新增 messageStore.js 消息存储模块,支持自动保存所有收发消息
- 修改 main.js,在消息转发时自动记录到本地存储
- 修改 preload.js,暴露消息管理 IPC API
- 修改 App.js,添加消息历史查看界面
  - 统计信息面板(总数/接收/发送/会话数)
  - 会话列表和消息详情
  - 搜索、过滤、分页功能
  - 导出 JSON 和清空历史
- 新增完整文档(MESSAGE_HISTORY.md 等)
- 新增测试脚本 test-message-history.js

版本:v1.0.1
2026-03-10 04:09:26 +08:00

218 lines
5.8 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.

# 消息历史功能 - 更新说明
## 更新日期
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
---
**更新完成!** 🎉