问题域/PD-484

Store 版本迁移

Store Version Migration

Zustand persist 的多版本迁移链,支持数据格式升级、废弃字段清理和向后兼容

子问题

1.多版本迁移链设计

2.废弃供应商和字段清理

3.单选到多选格式升级

4.platform到id格式转换

5.存储拓扑迁移(单体文件→per-project目录结构)

6.竞态条件导致的数据覆盖与事后恢复

7.多数据源(localStorage/IndexedDB/文件系统)优先级仲裁

各项目的解法1 solutions

Signals

横向对比

维度moyin-creator
迁移框架Zustand persist 内置 version + migrate 回调,零额外依赖
版本链长度v1-v9 共 9 个版本,覆盖 schema 变更、废弃清理、格式转换
拓扑迁移独立模块将单体 JSON 拆分为 _p/{pid}/ 目录结构,幂等标志位控制
数据恢复丰富度比较函数检测竞态 bug 导致的空数据覆盖,自动从旧文件恢复
向后兼容旧字段保留(apiKeys)、旧文件不删除、legacy fallback 读取路径
存储适配三源优先级(localStorage > IndexedDB > fileStorage)自动迁移最丰富数据

最佳实践

1.每个版本号对应独立迁移函数

2.保留旧字段确保向后兼容

3.拓扑迁移使用幂等标志位,失败不写标志下次重试

4.旧文件保留不删除,作为 fallback 和恢复数据源

5.用丰富度判断函数(检查关键字段内容)替代简单的时间戳比较