From 8e10e86901c8e35ec2c232a29b26598a663d19e7 Mon Sep 17 00:00:00 2001 From: zh Date: Wed, 30 Sep 2026 12:35:24 +0800 Subject: [PATCH] =?UTF-8?q?docs(aps):=20B1=20=E7=AC=AC=E4=B8=80=E6=AD=A5?= =?UTF-8?q?=E2=80=94=E2=80=94245=20=E4=B8=AA=E7=AB=AF=E7=82=B9=E5=88=86?= =?UTF-8?q?=E6=B5=81=E6=B8=85=E5=8D=95=EF=BC=88APS=20143=20/=20=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=2064=20/=20=E7=AC=AC=E4=B8=89=E6=96=B9=2013=20/=20?= =?UTF-8?q?=E4=B8=A2=E5=BC=83=2025=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aps/README.md | 1 + aps/docs/endpoint-split.md | 140 +++++++++++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 aps/docs/endpoint-split.md diff --git a/aps/README.md b/aps/README.md index 538f264..36cffef 100644 --- a/aps/README.md +++ b/aps/README.md @@ -54,6 +54,7 @@ uv run pytest -q | --- | --- | | [docs/boundary.md](./docs/boundary.md) | 边界清单(B0.2):带走 / 留下 / 丢弃、反向依赖清单、客户硬编码处置 | | [docs/contract-draft.md](./docs/contract-draft.md) | 对平台的契约草案(B0.2 → B5 输入):传输形状、只读能力清单、错误映射 | +| [docs/endpoint-split.md](./docs/endpoint-split.md) | 端点分流清单(B1 第一步):245 个端点分成 APS / 平台 / 第三方 Provider / 丢弃四类 | ## 迁出条件(ADR-0010) diff --git a/aps/docs/endpoint-split.md b/aps/docs/endpoint-split.md new file mode 100644 index 0000000..b569baf --- /dev/null +++ b/aps/docs/endpoint-split.md @@ -0,0 +1,140 @@ +# 端点分流清单(B1 第一步) + +> 数据来自 `main` 分支的 FastAPI 路由装饰器,2026-09-30 实测 245 个端点。归属按 `docs/spec/platform-vs-business.md` 的判据判定:**业务事实 → APS;平台基础能力 → 平台;与第三方系统的对接 → 独立 Provider**。 + +## 0 提取方式(可复现) + +```bash +# 在 main 分支上扫描所有 @app/@router 装饰器 +git grep -n -E '^\s*@(app|router)\.(get|post|put|patch|delete)\(' main -- server | wc -l +``` + +## 1 总量 + +| 归属 | 端点数 | 占比 | 去向 | +| --- | --- | --- | --- | +| APS | 143 | 58.4% | 迁进 `aps/src/aps/api`(B1) | +| 平台 | 64 | 26.1% | 由平台 TS 侧重写(不搬代码) | +| 第三方 Provider | 13 | 5.3% | 拆成独立 Provider(A8 / B 线) | +| 丢弃 | 25 | 10.2% | 不迁移 | +| **合计** | **245** | 100% | — | + +> 任务表 B1 里写的「210 个端点」指的是 `server/gateway/app.py` 这一个文件里的数量;全仓(含 `masterdata_api` / `governance_api` / `mps_api` / `plan_api` / `agent_api` 等子路由)是 245 个。 + +## 2 APS 侧清单(迁入 aps/) + +共 143 个端点,分 42 组: + +| 资源组 | 端点数 | 方法 | +| --- | --- | --- | +| `flex` | 16 | GET / POST | +| `gov` | 12 | GET / POST | +| `drawings` | 8 | DELETE / GET / POST | +| `rules` | 8 | DELETE / GET / POST / PUT | +| `plan` | 7 | GET | +| `params` | 7 | GET / POST | +| `mesh` | 7 | GET / POST | +| `*`(`/plans/{plan_id}/...` 挂载路由) | 6 | GET / POST | +| `dxf` | 5 | GET / POST | +| `saga` | 5 | GET / POST | +| `world` | 4 | GET | +| `schedule` | 4 | POST | +| `rebuild` | 4 | GET / POST | +| `orders` | 3 | GET / POST | +| `master` | 3 | GET / POST | +| `mrp` | 3 | GET / POST | +| `analytics` | 3 | GET | +| `sop` | 3 | GET / POST | +| `calendar` | 3 | GET / POST | +| `forecast` | 2 | GET / POST | +| `rush` | 2 | POST | +| `multimodal` | 2 | POST | +| `times` | 2 | GET / POST | +| `constraints` | 2 | GET / POST | +| `checkpoints` | 2 | GET | +| `reports` | 2 | GET | +| `resources` | 2 | GET | +| `trace` | 2 | GET / POST | +| `readiness` | 1 | GET | +| `attribution` | 1 | GET | +| `guidance` | 1 | GET | +| `scenario` | 1 | GET | +| `timeline` | 1 | GET | +| `versions` | 1 | GET | +| `stage` | 1 | POST | +| `confirm` | 1 | POST | +| `pending` | 1 | GET | +| `draft` | 1 | POST | +| `persist` | 1 | POST | +| `traces` | 1 | GET | +| `schedule-versions` | 1 | GET | +| `gap` | 1 | POST | + +## 3 平台侧清单(平台重写,不搬代码) + +共 64 个端点,分 17 组: + +| 资源组 | 端点数 | 方法 | +| --- | --- | --- | +| `projects` | 12 | DELETE / GET / PATCH / POST | +| `sessions` | 12 | DELETE / GET / PATCH / POST / PUT | +| `auth` | 9 | GET / POST | +| `knowledge` | 6 | GET / POST | +| `jobs` | 4 | GET / POST | +| `templates` | 3 | GET / POST | +| `settings` | 3 | GET / POST | +| `intents` | 2 | GET | +| `health` | 2 | GET | +| `import` | 2 | POST | +| `workspace` | 2 | GET / PUT | +| `project-files` | 2 | DELETE / POST | +| `features` | 1 | GET | +| `chat` | 1 | POST | +| `packs` | 1 | GET | +| `rag` | 1 | POST | +| `system` | 1 | GET | + +## 4 第三方 Provider(从 APS 里剥出来) + +> 这一组按判据第 3 条单列:它们是与 SAP / MES / WMS 的对接,不是 APS 自己的业务。B 线拆分时搬成各自的 Provider(A8)。 + +共 13 个端点,分 3 组: + +| 资源组 | 端点数 | 方法 | +| --- | --- | --- | +| `sap` | 5 | GET / POST | +| `mes` | 5 | GET / POST | +| `wms` | 3 | GET / POST | + +## 5 丢弃 + +共 25 个端点,分 6 组: + +| 资源组 | 端点数 | 方法 | +| --- | --- | --- | +| `skills` | 8 | GET / POST | +| `mcp` | 8 | GET / POST | +| `actions` | 4 | POST | +| `integrations` | 2 | GET / POST | +| `automation` | 2 | GET / POST | +| `invoke` | 1 | POST | + +## 6 迁移顺序建议 + +| 批次 | 内容 | 理由 | +| --- | --- | --- | +| 1 | APS 侧的**只读**端点:`master` / `orders` / `calendar` / `params` / `analytics` / `reports` / `views` / `plan`(GET) | 对应契约草案里的 7 个只读能力,B5 与 A5 都要用 | +| 2 | APS 侧的求解与闭环:`schedule` / `flex` / `mrp` / `mps` / `saga` / `world` / `checkpoints` / `rebuild` | 需要 `engines` 与 `state` 一起搬 | +| 3 | APS 侧的图纸与导入:`drawings` / `dxf` / `multimodal` / `times` | 依赖解析类依赖,独立可搬 | +| 4 | APS 侧治理:`gov` / `rules` | 由 B4 重写,不搬旧实现 | +| 5 | 第三方 Provider:`sap` / `mes` / `wms` | 与 APS 解耦后再做(A8) | + +## 7 交叉引用检查(B1 验收的另一半) + +分流完成后要能证明「无交叉引用」: + +| 检查 | 方式 | +| --- | --- | +| APS 不 import 平台 | `pytest` 里的 AST 守卫(B0 已加) | +| 平台不 import APS | 平台 `pnpm check:deps` + 跨库访问检查(A1.6 已实现) | +| 路由清单与代码一致 | 迁移后重新跑本文的提取脚本,比对数量与分组 |