feat(v2.4): 完成领域主写迁移
This commit is contained in:
@@ -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)数据流
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user