项目级状态隔离
Project-Scoped State Isolation
多项目数据隔离存储,支持项目切换时状态重载和跨项目资源共享
子问题
1.按项目路由存储路径
2.项目切换时状态rehydrate
3.跨项目资源共享控制
4.单体到多项目数据迁移
5.persist 异步写入与项目切换的竞态覆盖
6.项目复制时的文件级 copy 与 ID 重写
7.三层存储源(File/localStorage/IndexedDB)的数据丰富度仲裁
各项目的解法1 solutions
Signals
横向对比
| 维度 | moyin-creator |
|---|---|
| 路由机制 | Zustand persist storage 选项注入自定义 StateStorage adapter |
| 存储拓扑 | 双轨:ProjectScoped 纯项目路由 + SplitStorage 项目/共享分裂 |
| 切换协调 | switchProject 严格 5 步序列:flush → 路由 → rehydrate → 同步 ID → ensure |
| 竞态防护 | setItem 从 payload 提取 projectId,不依赖全局路由;hydration 等待阻塞 |
| 迁移策略 | 幂等 flag + Record/Flat/Timeline 三类迁移器 + recoverFromLegacy 自动恢复 |
| 共享控制 | app-settings-store 三开关(media/characters/scenes)控制跨项目可见性 |
最佳实践
1.Storage Adapter模式解耦存储路由
2.迁移前写新文件后备份旧文件确保安全
3.setItem 从 payload 提取 projectId 而非仅依赖全局路由防竞态
4.rehydrate 前阻塞等待 project-store hydration 完成
5.迁移失败不写 flag 确保下次启动自动重试