WinCode
Legacy sync

会话历史导入

把旧版 SQLite 中的会话与消息导入到新版数据库。

会话历史导入

旧版 WinCode 的会话和消息也存储在 SQLite 中,但 Schema 与新版不同。legacySync 模块在迁移时会打开旧版数据库,按项目分组把会话与消息逐条导入新版,并保证消息与所属会话的关联关系完整。

会话历史导入结果

数据对应关系

LegacySyncApplyResult 中,会话与消息的统计是分开的:

  • sessions.imported - 新版新增的会话数量
  • sessions.merged - 与新版已存在的会话合并的数量(按旧版 ID 匹配)
  • sessions.skipped - 因已存在而跳过的数量
  • sessions.failed - 导入失败的数量
  • messages 同理,但统计的是消息条数

projects 也有同样的统计,因为新版的项目结构可能与旧版不完全一致。

迁移策略

会话导入遵循"按会话 ID 去重"的原则:

  • 如果新版已经有同 ID 的会话,则跳过,避免重复。
  • 如果新版没有,则把会话连同它的全部消息一起插入。
  • 消息的 rolecontentcreatedAt、工具调用等字段都按原样保留,保证打开历史会话时能看到与旧版一致的对话。

项目归位

会话必须归属于某个项目。旧版的项目结构如果在新版中已经存在(按路径匹配),则把会话挂到已有的项目下;否则,会创建一个新的项目记录。迁移完成后,onProjectsImported 回调会通知前端刷新项目列表,让用户立即可见。

大数据量注意

如果旧版积累了数千条会话,迁移可能需要几十秒。迁移过程中对话框会停留在 syncing 状态,完成后自动切换到 done。建议在网络与磁盘负载较低时执行,避免影响其他使用。

相关文档

On this page