问题域/PD-478

项目级状态隔离

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 确保下次启动自动重试