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.用丰富度判断函数(检查关键字段内容)替代简单的时间戳比较