aps-agent/aps/README.md

4.4 KiB
Raw Blame History

APS(独立业务系统 · 开发期同仓形态)

本目录是 APS 的开发期落点,形态由 ADR-0010 规定:同仓库、不同目录、独立系统。

现状

APS 现在还在 main 分支里与平台混装(server/aps_domain 39,212 行、server/engines 7,551 行、server/state、server/importers,以及早期原型 aps-frontend/)。B0–B7 负责把它拆到这里并补齐独立运行所需的能力。

B0 已完成:工具链与包骨架、边界清单与契约草案、端点分流清单。

B1 首批 / B5 首批已完成:9 个只读模块从 main 搬入并改写引用(domain 4,053 行)+ 演示数据快照 + FastAPI 服务,现在能独立启动(uv run python -m aps.api),九个只读能力按契约返回。剩余:APS 侧另外 134 个端点、APS 自己的库、界面对话之外的独立界面。

工具链(B0.1)

项 值
Python 3.11+
依赖与锁定 uv;uv.lock 入库,CI 用 uv sync --locked
代码检查 ruff(配置在 pyproject.toml)
测试 pytest(tests/)
包结构 src/aps/,子包对应 B 线的搬迁目标
cd aps
uv sync                 # 建 .venv 并按 uv.lock 安装(含 dev 依赖)
uv run ruff check .
uv run pytest -q

依赖取舍:依赖清单以 main 分支的 requirements.txt 为准,按 B 线边界做了两处增删——去掉 LLM 与对话智能体相关依赖(D12:APS 不内置对话智能体),保留求解引擎(ortools / scipy)、文档与图纸解析(openpyxl / pdfplumber / python-docx / lxml / ezdxf)与持久层(sqlalchemy / alembic / pymysql)——它们都归 APS。

怎么跑(B1 首批 / B5 首批)

cd aps
uv sync
uv run python -m aps.api        # http://127.0.0.1:8000,交互式文档在 /docs
curl http://127.0.0.1:8000/api/health
curl http://127.0.0.1:8000/api/manifest
curl -X POST http://127.0.0.1:8000/api/capabilities/aps.orders.query \
     -H 'content-type: application/json' -d '{"params":{"limit":3}}'

已经能跑的九个只读能力:aps.master.query / aps.orders.query / aps.capacity.query / aps.calendar.query / aps.routing.query / aps.schedule.query / aps.exceptions.query / aps.inventory.query / aps.forecast.query。

数据从哪来

阶段 数据源
B1 过渡(现在) data/demo_world.json——由 main 的 build_demo_world() 导出(10 物料 / 7 销售订单 / 13 工位 / 180 条班次日历)。APS_WORLD_PATH 可指向别的快照
B2 拆库后 APS 自己的库(开发期 SQLite、生产 PostgreSQL)。domain 的读函数都吃 World 字典,换数据源不动它们

边界规则

规则 说明
工具链独立 Python;不共享平台的 Node 依赖
不互相引用 平台代码不得引用 aps/;APS 不得引用平台 TS 代码
唯一界面 Provider 契约(HTTP);平台通过 providers/aps 的适配器调用 APS
数据库独立 APS 库归 APS(ADR-0008):独立账号、独立 database
交付独立 APS 单独部署与升级(ADR-0009)
CI 分流 平台 job 与 APS job 互不阻塞

要搬进来的东西

来源(main) 内容 对应任务
server/aps_domain 业务主体:排产、主数据、订单、柔性、闭环运行时、报告 B1–B4
server/engines 求解引擎:CP-SAT / GA / NSGA2 / 池 / 规则 + 求解进程隔离 B1
server/state 世界状态、检查点、分支、数据包 B1
server/importers Excel / SQL / MOM 导入与 profile B1
aps-frontend 页面清单 界面外壳的范围参照(代码不搬) B6

文档

文档 内容
docs/boundary.md 边界清单(B0.2):带走 / 留下 / 丢弃、反向依赖清单、客户硬编码处置
docs/contract-draft.md 对平台的契约草案(B0.2 → B5 输入):传输形状、只读能力清单、错误映射
docs/endpoint-split.md 端点分流清单(B1 第一步):245 个端点分成 APS / 平台 / 第三方 Provider / 丢弃四类

迁出条件(ADR-0010)

满足任一条即迁出独立仓库:APS 需要独立发版节奏、APS 由独立团队维护、平台包发布流程需要隔离权限。