aps-agent/docs/adr/0010-aps-dev-shape-in-repo.md

47 lines
2.8 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-0010:APS 开发期与本仓库同仓不同目录
- **状态**:已接受
- **日期**:2026-09-24
- **决策人**:技术负责人
- **相关**:任务表 B0;ADR-0008、ADR-0009;《架构设计》第 2 节
## 背景
《架构设计》第 2 节写的是「业务系统的代码不在这个仓库里」,ADR-0008/0009 也把 APS 当独立系统。但 APS 目前还在 `main` 分支里与平台混装,B0–B7 是把它拆出来的全过程。拆的过程中需要两个问题先有答案:
1. 开发期 APS 放哪?立刻新建独立仓库,还是先在本仓库里隔离出一个目录?
2. 这段过渡形态要不要写进 ADR,免得以后有人拿《架构设计》第 2 节说事?
## 选项
| 选项 | 做法 | 代价 | 不选的理由 |
| --- | --- | --- | --- |
| A 开发期同仓库 `aps/` 目录 | APS 代码放本仓库 `aps/`,独立工具链、独立 CI、独立库;迁出条件写进 ADR | 仓库体积与 clone 成本上升;边界靠规则而非物理隔离 | 选定 |
| B 立刻新建独立仓库 | B0 之前先建仓库、配权限、配 CI | 边界最干净 | APS 还有 39k 行在 `main` 里,没拆完就分仓会让搬迁与查证两头跑 |
| C 继续混装 | 不动结构 | 零成本 | 与 D8、ADR-0008/0009 全部冲突 |
## 结论
选 A:**开发期 APS 放本仓库 `aps/` 目录**,按独立系统对待。
| 项 | 结论 |
| --- | --- |
| 目录 | `aps/`;工具链 Python,与平台(TS)不共享依赖 |
| 依赖规则 | 平台代码不得引用 `aps/`;APS 不得引用平台的 TS 代码。两侧唯一的界面是 Provider 契约(HTTP) |
| CI | 独立 job;平台的 lint / typecheck / test 不因 APS 失败而阻塞,反之亦然 |
| 数据库 | APS 库归 APS(ADR-0008),仍要求独立账号、独立 database |
| 交付 | 仍按 ADR-0009:首版只交付纯平台包,APS 单独部署 |
| 与架构设计的关系 | 《架构设计》第 2 节描述的是最终形态;本文定的是**开发期过渡形态** |
| 迁出条件 | 满足任一条即迁出独立仓库:① APS 需要独立发版节奏;② APS 由独立团队维护;③ 平台包发布流程需要隔离权限 |
## 影响
- **对代码**:新增 `aps/` 目录;平台侧只在 `providers/aps` 里写适配器,不直接引用 `aps/`
- **对任务**:B0 的第一个产出物从「定仓库位置」改为「定 `aps/` 目录结构与迁出条件」;B1–B7 在 `aps/` 里做
- **对文档**:《架构设计》第 2 节补一句开发期说明;术语表「业务系统」条目无需改
- **不这么做的后果**:B0 卡在仓库创建上无法启动;或者继续混装,拆到一半两套工具链互相牵制
## 遗留
- 迁出时机的判断人:技术负责人;触发时按本 ADR 的迁出条件走
- `aps/` 与 `platform` 的 CI 分流细节:A1.6 落地时一并写进工作流