feat(export): 增加微信聊天增量 JSON 导出 (#122)
新增 export_all_chats --delta-only 按时间窗口导出每个会话的增量 JSON. - --delta-only 写入 deltas/<run_id>/manifest.json + 有消息的会话文件, 便于后续按批次消费 - 沿用现有 CSV plan 选择逻辑, 可通过 --from-plan-csv 控制范围 - 空时间窗口会话直接跳过, 不再生成 message_count=0 的 delta 文件 - 增量 JSON 保留会话级 metadata, 不改变现有 CSV 导出默认流程 - manifest.json 只记录实际有消息的会话, 无法解析的留在 errors 中便于定位 测试: tests/test_export_all_chats_delta.py 7 个 case (run_id 时间戳形状 / 文件名安全化 / msg_uid 哈希组成 / 写窗口不覆盖全量 JSON / 空窗口跳过 / CLI 参数校验 / manifest 记录文件). 跟 #114 (CSV plan) 互补 — CSV plan 选 "哪些会话" 而 delta 选 "哪个时间窗口".
This commit is contained in:
@@ -110,3 +110,24 @@ pending = [m for m in data["messages"]
|
||||
`[图片]` 等。原始媒体仍在 WeChat DB 中,可用 `mcp_server.py` 中的
|
||||
辅助函数(`decode_image`、`decode_voice`)取出。
|
||||
- **群聊**中的 `sender` 是群成员解析后的显示名;当前登录用户仍为 `"me"`。
|
||||
|
||||
## Delta JSON 输出
|
||||
|
||||
`export_all_chats.py --delta-only --start <time> [--end <time>]` 会写入:
|
||||
|
||||
```text
|
||||
deltas/<run_id>/manifest.json
|
||||
deltas/<run_id>/chats/*.delta.json
|
||||
```
|
||||
|
||||
时间窗口内没有消息的会话会跳过,不生成空的 `*.delta.json` 文件。
|
||||
|
||||
Delta 文件顶层字段与完整聊天 JSON 类似,但包含:
|
||||
|
||||
- `schema_version`
|
||||
- `export_kind: "wechat_delta"`
|
||||
- `range.start` / `range.end`
|
||||
- `message_count`
|
||||
- `messages[].msg_uid`
|
||||
|
||||
`msg_uid` 是下游去重用的稳定哈希,不要求调用方只依赖 `local_id`。
|
||||
|
||||
Reference in New Issue
Block a user