aps-agent/docs/adr/0003-data-scope-and-authori...

45 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)
- 既有审批数据里有在途状态,处置方式见 ADR-0005