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 个页面(代码不搬) |