feat(v2.4): 完成领域主写迁移

This commit is contained in:
2026-07-08 15:41:10 +08:00
parent 2358dbd0b5
commit da71128ccd
42 changed files with 1410 additions and 81 deletions

View File

@@ -142,6 +142,31 @@
- 后端只在 `key + updatedAt(version)` 匹配时更新;如果其他用户已经先保存,返回 `409 APP_DATA_CONFLICT`,响应包含当前服务端 `currentVersion``currentValue`
- 收到 `ServerDataConflictError` 时,不要自动重试覆盖。当前处理策略是阻止静默覆盖,后续 UI 冲突合并能力再单独补。
## V2.4 领域写入流程
已迁移领域的 store 默认写入顺序:
1. 本地状态先做乐观更新,保持 UI 响应速度。
2. 优先调用 `apps/web/lib/domain-api.ts` 中的领域 API。
3. 领域 API 成功后,用服务端返回行替换本地临时行;若返回 `activities`,直接合并工作活动证据。
4. 领域 API 不可用或旧环境未部署时,才使用 `loadServerData` / `saveServerData` 做 AppData 兼容兜底。
5. 不新增长期双写逻辑AppData fallback 只用于兼容、迁移和回滚,不作为已迁移领域的事实源。
当前领域主写范围:
- Product / Project / Version根数据主写`products-overview` 仅兼容。
- Requirement`productId` 写入,需求池列表走服务端分页、搜索、筛选、排序。
- VersionPlan / DevTask / TestCase / Bug`versionId` 写入,并维护工作活动和小宝 dirty 标记。
- Member / TaskCategory成员身份字段和任务类型字典主写关系表。
- TaskWorklog / OvertimeRecord / WorkActivity证据型数据主写关系表保持追加语义。
仍在 AppData 兼容配置中的内容:
- 部门、角色、密码规则。
- 加班原因。
新增领域 store 时,先写 source contract 测试证明主写不是 `saveServerData('<key>')`,再实现领域 API 和 fallback。
## 与我相关Workspace数据流
```