108 lines
7.0 KiB
Markdown
108 lines
7.0 KiB
Markdown
|
|
# APS 边界清单(B0.2)
|
|||
|
|
|
|||
|
|
> 判据来自 `docs/spec/platform-vs-business.md`(三个问题:与具体业务系统无关吗 / 它是业务事实的承载者吗 / 它是与第三个系统的对接吗)。本文是拆分时的实际处置表,有争议先改 `platform-vs-business.md` 再改这里。
|
|||
|
|
|
|||
|
|
## 0 结论摘要
|
|||
|
|
|
|||
|
|
| 类别 | 规模 | 去向 |
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| 带走 | 83 文件 / 51,073 行 | 迁进 `aps/src/aps/`,成为独立系统 |
|
|||
|
|
| 留下 | 跨系统流程、对话、导入骨架、报告导出机制 | 平台已有或平台重写(不搬代码,只搬语义) |
|
|||
|
|
| 丢弃 | 客户专用入口、与平台重复的调度/工具运行时、早期前端原型 | 不迁移,旧分支归档 |
|
|||
|
|
|
|||
|
|
## 1 实测口径(2026-09-30,`main` 分支)
|
|||
|
|
|
|||
|
|
| 来源目录 | 文件 | 行数 | 去向 |
|
|||
|
|
| --- | --- | --- | --- |
|
|||
|
|
| `server/aps_domain` | 59 | 39,270 | `aps/src/aps/domain`(主体) |
|
|||
|
|
| `server/engines` | 11 | 7,562 | `aps/src/aps/engines` |
|
|||
|
|
| `server/state` | 8 | 2,714 | `aps/src/aps/state` |
|
|||
|
|
| `server/importers` | 5 | 1,527 | `aps/src/aps/importers` |
|
|||
|
|
| **合计** | **83** | **51,073** | — |
|
|||
|
|
|
|||
|
|
行数为文件内换行符计数(`git show main:<file>` 逐文件统计),与 `wc -l` 同口径。
|
|||
|
|
|
|||
|
|
## 2 三类清单
|
|||
|
|
|
|||
|
|
### 2.1 带走(进 `aps/`)
|
|||
|
|
|
|||
|
|
| 子包 | 主要来源 | 说明 |
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| `domain` | `scheduling_problem_v2` / `scheduling_validator` / `planning` / `mps_planning` / `mrp` / `orders` / `masterdata` / `master_query` / `inventory` / `changeover` / `sop_rules` / `flex` / `rush` / `forecast` / `scenario*` / `robustness` / `sensitivity` / `shadow_price` / `cp_*` / `supply_netting` / `sourcing` / `attribution` / `analytics` / `readiness` / `reports` / `views` / `scheduling_dto` / `trace` / `params` / `guidance` / `intake` / `importers`(APS 侧) | 排产、主数据、订单、交期、运行与结果——业务事实的承载者 |
|
|||
|
|
| `domain.closed_loop` | `closed_loop_runtime` / `closed_loop_problem` / `saga` / `adjust` / `conflicts` / `constraints` / `lns` / `explore_boundary` / `scene*` | 闭环与冲突消解;`saga` 去掉对平台运行时的引用后归 APS |
|
|||
|
|
| `domain.drawing` | `drawing_ai` / `drawing_dxf` / `drawing_pdf` / `drawing_process` / `drawing_understanding` / `dxf_drawing` / `multimodal` | 图纸解析成工艺信息归 APS;展示与上传归平台 |
|
|||
|
|
| `engines` | CP-SAT / GA / NSGA2 / 池 / 规则 / `external_engine` | 求解引擎与求解进程隔离;`external_engine` 去掉平台依赖 |
|
|||
|
|
| `state` | 世界状态、检查点、分支、数据包 | 排产过程的中间状态 |
|
|||
|
|
| `importers` | `excel_importer` / `sql_pack` / `profiles/*` / `mps_import` | 导入实现;profile 机制本身归平台 |
|
|||
|
|
| `governance`(新写) | 借鉴 `governance_rules` 的动作分级 + 平台审计的链式哈希 | B4 自己实现,不搬旧代码 |
|
|||
|
|
| `api`(新写) | 无 | B5 的契约化接口层 |
|
|||
|
|
|
|||
|
|
### 2.2 留下(平台侧)
|
|||
|
|
|
|||
|
|
| 项 | 为什么留 | 现状 |
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| 跨系统顺序流程(`workflow.py` 里的编排骨架) | 它同时碰 APS 与 ERP/MES,属跨系统流程,归平台 `server/workflows` | 平台侧已有目录与任务;APS 只保留业务步骤 |
|
|||
|
|
| 对话与意图(`kangni_intake.py` 的对话部分) | D12:APS 不内置对话智能体 | 平台已有 A3/A4;APS 只留「智能体接入点」契约 |
|
|||
|
|
| 导入骨架与 profile 机制 | 任何业务系统都要有导入入口,属平台基础能力 | 平台侧 `server` 已有导入骨架任务;APS 保留 profile 文件 |
|
|||
|
|
| 报告导出机制 | 导出成 PDF/Excel 的机制与业务无关 | 平台侧;APS 只产出报告内容 |
|
|||
|
|
| 项目/会话/权限/审计的通用模型 | 平台基础能力,见 `platform-vs-business.md` 三分类 | 平台已实现(A3/A4) |
|
|||
|
|
|
|||
|
|
### 2.3 丢弃
|
|||
|
|
|
|||
|
|
| 项 | 理由 |
|
|||
|
|
| --- | --- |
|
|||
|
|
| `kangni_intake.py` 的客户专用入口 | 客户专用入口被「平台对话 + 能力调用」取代;通用部分(主数据核对)归 `domain.masterdata` |
|
|||
|
|
| `folder_pack.py` 的目录打包/交付介质逻辑 | 是当时的交付手段,不是业务能力;其中与排产相关的部分已迁 `domain` |
|
|||
|
|
| 平台侧 `agent_core` 的重复实现(意图、工具运行时、调度) | 平台 TS 版从零重写(D8),旧 Python 实现只作借鉴 |
|
|||
|
|
| `aps-frontend/`(33 个页面的早期原型) | localStorage 原型,只作 B6 的页面范围参照,代码不搬 |
|
|||
|
|
|
|||
|
|
### 2.4 待定(需要拍板)
|
|||
|
|
|
|||
|
|
| 项 | 分歧点 | 建议 |
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| `mesh.py`(网格面板相关计算) | 是开发调试用还是业务视图 | 先留在 `main`,B6 做界面时按是否出现在业务页面决定 |
|
|||
|
|
| `external_engine.py` | 外部求解器是 APS 能力还是平台能力 | 归 APS:求解器是排产的核心手段,换业务系统就不成立(判据 1) |
|
|||
|
|
|
|||
|
|
## 3 反向依赖处置(B3 输入)
|
|||
|
|
|
|||
|
|
今日实测:APS 侧有 **17 个文件**引用平台 `agent_core`。
|
|||
|
|
|
|||
|
|
| 目录 | 文件数 | 文件 |
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| `aps_domain` | 14 | `adjust` / `conflicts` / `constraints` / `flex` / `folder_pack` / `governance_rules` / `mes` / `mps_planning` / `multimodal` / `project_analyze` / `saga` / `sap_sync` / `wms_events` / `workflow`(`workflow` 命中 31 行,最重) |
|
|||
|
|
| `engines` | 2 | `external_engine` / `nsga2_engine` |
|
|||
|
|
| `importers` | 1 | `sql_pack` |
|
|||
|
|
|
|||
|
|
处置分三类:
|
|||
|
|
|
|||
|
|
| 用途 | 处置 |
|
|||
|
|
| --- | --- |
|
|||
|
|
| 审计与治理调用 | 换成 APS 自己的 `governance`(B4) |
|
|||
|
|
| 工具/能力注册 | 换成 `api` 层的能力声明(B5) |
|
|||
|
|
| 事件发布与运行时调度 | 换成 APS 自己的事件出口;跨系统的部分留给平台 |
|
|||
|
|
|
|||
|
|
## 4 客户硬编码处置
|
|||
|
|
|
|||
|
|
命中行数(`git grep -c`,2026-09-30 实测):
|
|||
|
|
|
|||
|
|
| 位置 | 命中行数 | 处置 |
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| `aps_domain/workflow.py` | 32 | 编排部分迁平台 `workflows`;业务步骤里的客户分支改成参数(工艺/日历/策略从项目设置读) |
|
|||
|
|
| `aps_domain/kangni_intake.py` | 33 | 整个文件丢弃(客户专用入口),通用逻辑并入 `domain.masterdata` |
|
|||
|
|
| `aps_domain/folder_pack.py` | 29 | 文件丢弃;相关排产逻辑已并入 `domain` |
|
|||
|
|
| `importers/excel_importer.py` | 4 | 改成读 profile,不判断客户 |
|
|||
|
|
| `importers/profiles/kangni.json` | 3 | 保留为 profile 示例,改名 `example.json` 并去掉客户字段 |
|
|||
|
|
| **合计** | **101** | 迁完后 `grep -i kangni` 在 `aps/` 里应为 0,由 CI 卡住 |
|
|||
|
|
|
|||
|
|
> 与 A0 盘点时的 116 处(folder_pack 46 / kangni_intake 36 / workflow 36)差异来自统计口径:当时的数字是「出现次数」,本表是「命中行数」。
|
|||
|
|
|
|||
|
|
## 5 与任务的对应
|
|||
|
|
|
|||
|
|
| 任务 | 本清单的作用 |
|
|||
|
|
| --- | --- |
|
|||
|
|
| B1 网关分流 | 按 2.1/2.2 决定每段代码落哪一侧 |
|
|||
|
|
| B2 数据库拆分 | 见 ADR-0008 补记的 8 张平台表;APS 侧 6 张表随之进 `aps/` |
|
|||
|
|
| B3 解除双向引用 | 直接使用第 3 节的 17 个文件清单 |
|
|||
|
|
| B4 APS 治理 | 借鉴 `governance_rules` 的分级 + 链式哈希,代码新写 |
|
|||
|
|
| B5 契约化接口层 | 见 `contract-draft.md` |
|
|||
|
|
| B6 APS 界面 | 页面范围参照 `aps-frontend/` 的 33 个页面(代码不搬) |
|