47 lines
2.4 KiB
Markdown
47 lines
2.4 KiB
Markdown
# ADR-0003:数据作用域与权威数据源
|
||
|
||
- **状态**:已接受
|
||
- **日期**:2026-09-22
|
||
- **决策人**:技术负责人
|
||
- **相关**:任务表 A0.4(决策 D2);设计文档《实施设计》1.5
|
||
|
||
## 背景
|
||
|
||
引擎会在开发或部署期被替换,业务系统会被拆出去独立演进。数据归属如果跟着变,每次调整都要迁数据。所以要在重构开始前把两件事定死:会话的作用域怎么划分,以及每类数据的权威方是谁。
|
||
|
||
这条决定与「兼容旧数据」无关:项目仍在开发阶段,没有客户试用数据,不需要迁移或兼容任何历史数据。它管的是新系统内部的归属,作用是让将来的替换与拆分不需要迁数据。
|
||
|
||
## 选项
|
||
|
||
| 选项 | 做法 | 代价 | 不选的理由 |
|
||
| --- | --- | --- | --- |
|
||
| A 只做项目内共享 | 所有会话归属于项目 | 简单 | 个人临时提问、调研无处安放 |
|
||
| B 个人与项目并存,都可写 | 两种作用域一视同仁 | 灵活 | 个人会话能发起写操作时,确认与审计缺少项目归属 |
|
||
| C 并存但个人只读 | 个人会话用于查询与调研;写操作必须在项目会话内 | 多一条判定规则 | 选定 |
|
||
|
||
## 结论
|
||
|
||
选 C。理由:写操作要过确认、留审计、归集证据,这三件事都要求项目归属;只读的个人会话既保留便利,也不产生无归属的写操作。
|
||
|
||
同时定下权威数据源:
|
||
|
||
| 数据 | 权威方 |
|
||
| --- | --- |
|
||
| 会话与消息、上下文检查点 | 平台(应用服务) |
|
||
| 执行记录、确认记录、审计 | 平台(Core) |
|
||
| 引擎原生状态(内存上下文、线程) | 对应引擎,仅用于同引擎恢复 |
|
||
| 客户端本地 JSONL | 离线副本,冲突以服务端为准 |
|
||
| 业务数据(订单、主数据、排产结果) | 业务系统(APS) |
|
||
|
||
## 影响
|
||
|
||
- **对代码**:会话表加 `scope` 字段;权限判定收在单一入口,不在各处写 if
|
||
- **对任务**:A1.7 定义的事件模型是界面契约;A3.7 会话落库写明"平台检查点为权威、引擎原生状态只作同引擎恢复"
|
||
- **对文档**:设计文档《实施设计》1.5「谁是权威数据源」
|
||
- **不这么做的后果**:个人会话能写时,审计链缺主体归属;引擎原生状态若被当作业务真相,换引擎就要迁数据
|
||
|
||
## 遗留
|
||
|
||
- APS 独立后要自带项目与租户概念(任务 B2)
|
||
- 无历史数据需要迁移,原「在途审批数据处置」一项取消
|