phoenixray2000
|
5e0eaa33fa
|
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 选 "哪个时间窗口".
|
2026-05-29 13:18:53 +08:00 |
|
phoenixray2000
|
728dbb72df
|
feat(export): 支持 CSV 计划导出和稳定导出索引 (#114)
两个核心增强:
1. **CSV 计划导出工作流** (`--write-plan-csv` / `--from-plan-csv`)
- 支持 blacklist (export=0 跳过) / whitelist (export=1 导出) 两种模式
- `--size-mode estimate|scan` 控制是否扫本地附件
- UTF-8 BOM 编码, Excel/WPS 直接打开
- 解决了之前"动不动全量导出"的痛点
2. **`_export_index.json` 稳定导出索引**
- 用 username 追踪当前 JSON 文件
- 联系人备注/群名变化时自动重命名旧文件 (而不是产生孤儿)
- 同名联系人冲突时自动追加 `__<username>` 后缀
- atomic write (tmp + os.replace), bootstrap from existing files
3. **JSON metadata 扩展**
- 新增 `date_first_msg / date_last_msg / contact_remark / contact_nick_name / contact_tags / contact_memo`
测试: 717 行, 20 tests pass, 覆盖 CRUD 索引、黑白名单、命名冲突、incremental rename、UTF-8 BOM。
|
2026-05-19 02:20:30 +08:00 |
|