aps-agent/providers/aps
zh 2e46b85aca feat(provider): A5 APS Provider 接通真实 APS 服务(能力清单取自 manifest,端到端读到真实订单) 2026-09-30 14:12:24 +08:00
..
capabilities feat(provider): A5 APS Provider 接通真实 APS 服务(能力清单取自 manifest,端到端读到真实订单) 2026-09-30 14:12:24 +08:00
README.md feat(provider): A5 APS Provider 接通真实 APS 服务(能力清单取自 manifest,端到端读到真实订单) 2026-09-30 14:12:24 +08:00
index.ts feat(provider): A5 APS Provider 接通真实 APS 服务(能力清单取自 manifest,端到端读到真实订单) 2026-09-30 14:12:24 +08:00
package.json feat(workspace): pnpm monorepo 骨架与包边界(A1.1) 2026-09-23 19:29:57 +08:00
tsconfig.json feat(provider): A5 APS Provider 接通真实 APS 服务(能力清单取自 manifest,端到端读到真实订单) 2026-09-30 14:12:24 +08:00

README.md

APS Provider(平台侧适配器)

把 APS 的能力翻译成平台契约:声明能力、转发调用、归一化回执。不判断权限(归 APS)、不碰模型上下文。

能力的权威来源

APS 的 GET /api/manifest 是唯一权威(A5.1)。平台启动注册时拉一次,不在平台侧手抄能力清单; capabilities/*.capability.json 是从那份 manifest 生成的人审阅副本,scripts/aps-provider.test.mjs 里有一条「不漂移」用例:起真 APS 服务后逐条比对用途与副作用。

describe() 连不上 APS 就直接失败——注册不上比"注册上了但能力是旧的"安全。

注册到哪里

平台按配置动态加载,代码里不静态依赖本包(依赖方向检查不允许 @aps/server → 具体 Provider):

# 开发期最省事的写法:给个地址就注册
APS_PROVIDER_APS_URL=http://127.0.0.1:8000 pnpm dev

或在 ~/.aps/config.json 里写 providers: [{ "module": "@aps/provider-aps", "baseUrl": "http://aps.internal:8000" }]。 APS 没起来时平台照常启动,只是能力清单里没有 aps.*——不会因为一个业务系统挂了就整个平台起不来。

字段、单位与时区映射(A5.3)

平台与 APS 之间不翻译字段名:APS 的能力输入输出 schema 就是契约(aps.orders.query 的 items[] 就是 APS 的订单结构)。 需要映射的只有三样,都写在能力描述里让模型看见:

项 APS 侧 平台/界面侧 处理
订单号 orderNo,如 SO20260930001 原样展示 不加工;检索时按字符串包含匹配
状态 APPROVED / PENDING / … 大写英文枚举 中文标签 映射表放在界面层(B6),平台不拦不改
数量与单位 quantity + unit(如 件) 原样展示,单位随数量一起显示 不做单位换算;换算是 APS 的事
时间 orderDate / deliveryDate:YYYY-MM-DD(车间本地日期,无时区) 原样展示 按日期处理,不做 UTC 转换——制造日期是本地日历日,转时区会整体差一天
时间戳 createdAt / updatedAt:YYYY-MM-DD HH:mm(本地时间) 原样展示 同上

这条规则的理由:APS 的数据是"工厂日历"语义,不是"绝对时刻"语义。平台若把它当 UTC, 跨时区部署时会看到订单日期整体偏移。

实例路由(A5.4)

首版一个 Provider 实例对应一个 APS 部署(一个 baseUrl)。多工厂/多租户路由(哪个租户连哪个 APS 实例) 在 A7 的 Provider 套件管理里做,届时按 tenantId 选择实例;现在写死在配置里。

现在支持到什么程度

项 状态
只读能力(9 个) 已接通真实 APS 服务,端到端用例在 scripts/aps-provider.test.mjs
写能力(aps.schedule.preview / publish) 只有契约草案,APS 侧尚未实现
账号绑定(ADR-0012) 平台侧按人绑定已在 A4.1 落地;APS 侧的登录换取流程待 A5.7