场景 01 · AI 接口操作说明

把一笔业务交给 AI,
每一步都有据可查。

从销售下单、收款,到采购、入库与发货。让 AI 按业务顺序调用接口,再用订单、库存和款项核对结果。

2026-10-15 · 普通产品 / 普通库存 / 实体仓 / 我方仓发

先从一次查询开始

解压资料包,在 WorkBuddy 或其他 AI 工具中打开该目录,让 AI 阅读接入手册、操作规则与 OpenAPI 文件。为 HTTP 客户端完成正常登录后,先查询并核对一张已有销售单。

请阅读 README.md、AGENT.md 与 openapi.json。先只查询我指定销售单的商品、收款与出库进度,给出下一步建议。暂时不要修改数据,不要输出登录凭据。

当前使用账号密码与会话登录,无需图形验证码;浏览器与 HTTP 客户端的会话需分别准备。具体登录命令见接入手册。

一条流程,连起货与款

  1. 销售下单与审核选客户、加商品,核对金额后提交审核。
  2. 收款与发起采购登记真实到账,从关联待采建议生成采购单。
  3. 付款与采购入库登记付款,核对到货,清点并上架到实体库位。
  4. 拣货、复核、打包与发货按标签核对数量,登记真实物流,再确认交运。
  5. 回查订单、库存与款项确认业务数量和关联单据一致,记录待办。

销售审核通过会产生待采购建议;本场景按先收款、再采购演示。发货后的签收、开票与售后另行处理。

接口能做什么,实际业务就核对什么

按现有账号操作

沿用登录账号与公司上下文,遵循现有业务状态和审核规则。接入前核对角色与可访问范围。

写入前确认业务事实

收付款接口登记流水;收货、上架、打印和交运仍需真实发生。先确认金额和数量,再让 AI 登记。

每一步回查结果

对照单号、商品行、包裹和金额。请求超时先查询,避免重复下单、记账或发货。

当前提供现有 HTTP 接口及 DSL 表单协议说明,需配置 AI 工具。此版本已核对源码,尚未完成 WorkBuddy 客户端端到端联调。

对照真实系统截图核验

配图说明来自 demo 账号实际完成的普通产品业务。图中单号用于说明流程,接入时请读取本次业务 ID。

按业务步骤查接口

查询使用 GET,写入使用 POST。展开查看请求字段;详细业务顺序、错误处理与 ID 传递见下载手册。

01 · 检查登录GET /login/currentUser.html

返回 data.userName。公司由登录账号决定,调用前人工核对登录账套。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

02 · 查找客户GET /saleorder/trader/search

按名称定位客户;多条匹配必须让用户选择。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
keywordstring是客户关键词
03 · 查询客户联系人GET /trader/detail/contacts

只使用所选客户所属联系人。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
04 · 查询客户地址GET /trader/detail/addresses

核对真实收货地址及联系人。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
05 · 查询销售仓库GET /saleorder/warehouse/list

本场景选择实体仓;不选择供应商直发虚拟仓。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

06 · 查询产品GET /saleorder/product/search

检查业务类型 GENERAL、普通库存类型 2;不要把 GENERAL 与库存类型混为一谈。搜索结果不足时在商品详情人工核实。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
keywordstring是商品编码或名称
pageIndexinteger否页码,从 1 开始
07 · 创建销售单头POST /p/form/submit-saleorder/saleorder-step1

现有 DSL 表单协议。先 GET /p/form/page-saleorder/saleorder-step1 核对当前版本表单;返回 data.ID、data.SALEORDER_NO。不可传入公司、操作人或自定义单号。本请求省略 ID 表示新增。本例客户、收货方、发票抬头相同,显式填写三组 ID;实际收货方不同需逐一查询确认。

请求类型:form;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
TRADER_IDinteger是客户 ID
TRADER_CONTACT_IDinteger是客户联系人 ID
TRADER_ADDRESS_IDinteger是客户地址 ID
WAREHOUSE_IDinteger是实体仓 ID
TAKE_TRADER_IDinteger是收货客户 ID,本例与客户相同
TAKE_TRADER_CONTACT_IDinteger是收货联系人 ID
TAKE_TRADER_ADDRESS_IDinteger是收货地址 ID
INVOICE_TRADER_IDinteger是发票抬头客户 ID,本例与客户相同
INVOICE_TRADER_CONTACT_IDinteger是发票联系人 ID
INVOICE_TRADER_ADDRESS_IDinteger是发票地址 ID
{
  "TRADER_ID": 10001,
  "TRADER_CONTACT_ID": 10002,
  "TRADER_ADDRESS_ID": 10003,
  "WAREHOUSE_ID": 10004,
  "TAKE_TRADER_ID": 10001,
  "TAKE_TRADER_CONTACT_ID": 10002,
  "TAKE_TRADER_ADDRESS_ID": 10003,
  "INVOICE_TRADER_ID": 10001,
  "INVOICE_TRADER_CONTACT_ID": 10002,
  "INVOICE_TRADER_ADDRESS_ID": 10003
}
08 · 添加普通产品POST /saleorder/detail/item/save

新行不传 ID;既有行修改才传 ID。只在允许编辑、未付款状态下操作。保存后重读明细和总额;普通仓发 DIRECT_TYPE=0。

请求类型:form;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
SALEORDER_IDinteger是销售单 ID
PROD_IDinteger是产品 ID
PROD_NUMnumber是数量,必须大于 0
BASE_PRICEnumber是经用户确认的销售单价
DIRECT_TYPEinteger是本场景固定 0
PROD_COMMENTSstring否明细备注
IDinteger否可选:已有销售明细 ID
{
  "SALEORDER_ID": 10005,
  "PROD_ID": 10006,
  "PROD_NUM": 2,
  "BASE_PRICE": 100,
  "DIRECT_TYPE": 0
}
09 · 销售单头GET /saleorder/detail/header

核对客户、仓库、总额及审核、收款、发货状态。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
10 · 销售明细GET /saleorder/detail/items

记录商品行 ID、数量、单价。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
11 · 关联应收GET /saleorder/detail/arap

返回关联应收单,记录对应 ID、单号、金额,勿取其他订单应收。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
12 · 销售资金流水GET /saleorder/detail/flow

核对已有收款,避免重复登记。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
13 · 关联出库GET /saleorder/detail/outbound

每行 OUTBOUND_ID 是出库单 ID;行 ID 是出库明细 ID。按产品和关联销售行匹配。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
14 · 提交销售审核POST /mycamunda/check/start/Process_order

提交申请;提交不等于审核通过。重读业务状态后再决定下一步。

请求类型:form;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
15 · 完成销售审核POST /mycamunda/check/complete/Process_order

仅在当前账号有审批资格且用户已授权时调用。pass=true 通过;false 驳回时填写 comment。多级流程需按真实待办逐级办理,不能循环自动点通过。

请求类型:form;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单 ID
passboolean是是否通过
commentstring否审核意见
16 · 销售审核历史GET /mycamunda/check/historyJson/Process_order

结合对应单头 CHECK_STATUS 核对审批结果;不以单次 HTTP 200 判断审批完成。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
17 · 提交采购审核POST /mycamunda/check/start/Process_purchase

提交申请;提交不等于审核通过。重读业务状态后再决定下一步。

请求类型:form;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
18 · 完成采购审核POST /mycamunda/check/complete/Process_purchase

仅在当前账号有审批资格且用户已授权时调用。pass=true 通过;false 驳回时填写 comment。多级流程需按真实待办逐级办理,不能循环自动点通过。

请求类型:form;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单 ID
passboolean是是否通过
commentstring否审核意见
19 · 采购审核历史GET /mycamunda/check/historyJson/Process_purchase

结合对应单头 CHECK_STATUS 核对审批结果;不以单次 HTTP 200 判断审批完成。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
20 · 提交应收应付审核POST /mycamunda/check/start/Process_finance_arap

提交申请;提交不等于审核通过。重读业务状态后再决定下一步。

请求类型:form;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
21 · 完成应收应付审核POST /mycamunda/check/complete/Process_finance_arap

仅在当前账号有审批资格且用户已授权时调用。pass=true 通过;false 驳回时填写 comment。多级流程需按真实待办逐级办理,不能循环自动点通过。

请求类型:form;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单 ID
passboolean是是否通过
commentstring否审核意见
22 · 应收应付审核历史GET /mycamunda/check/historyJson/Process_finance_arap

结合对应单头 CHECK_STATUS 核对审批结果;不以单次 HTTP 200 判断审批完成。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
23 · 应收应付单头GET /finance/arap/detail/bill

读取金额及当前状态。收款和付款使用各自关联的应收/应付单 ID。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
24 · 已登记资金流水GET /finance/arap/detail/flows

读取金额及当前状态。收款和付款使用各自关联的应收/应付单 ID。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
25 · 登记收付款流水POST /finance/arap/flow/save

只记录已实际发生的收付款,不会向银行或支付平台转账。新增不传 ID。金额、对象、时间需用户确认;保存后还需审核对应应收应付单。

请求类型:form;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
FINANCE_BILL_IDinteger是关联应收/应付单 ID
TRADER_TIMEstring是本地交易时间,如 2026-10-15 10:00:00
AMOUNTnumber是实际发生金额,大于 0
TRADER_SUBJECTinteger是1 对公,2 对私
TRADER_MODEinteger是1 支付宝,2 银行,3 微信,4 现金
PAYERstring是付款方
PAYEEstring是收款方
PAYER_BANK_NAMEstring否付款银行
PAYER_BANK_ACCOUNTstring否付款账号
PAYEE_BANK_NAMEstring否收款银行
PAYEE_BANK_ACCOUNTstring否收款账号
FILE_IDSstring否已上传附件 ID,逗号分隔
COMMENTSstring否备注
IDinteger否可选:编辑的流水 ID
{
  "FINANCE_BILL_ID": 10007,
  "TRADER_TIME": "2026-10-15 10:00:00",
  "AMOUNT": 200,
  "TRADER_SUBJECT": 1,
  "TRADER_MODE": 2,
  "PAYER": "经确认的客户名称",
  "PAYEE": "经确认的收款方名称",
  "COMMENTS": "按实际到账凭证登记"
}
26 · 查询待采购建议GET /p/list/data-purchase/purchase-suggestion-list

分页返回 data 列表。仅处理 RELATED_TYPE=2、RELATED_ID=本销售单且 SUGGEST_STATUS=WAIT 的行;LOCKED 不可再次生成。分页参数为 currentPage/perPageInt,勿用 page/limit;总数见同筛选 countpage 接口,不将当前页 count 当总数。注意建议 ID 与产品 ID、销售明细 ID 不同。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
RELATED_TYPEinteger是销售固定 2
RELATED_IDinteger是销售单 ID
currentPageinteger否页码,从 1 开始
perPageIntinteger否每页条数
27 · 待采购总数GET /p/list/countpage-purchase/purchase-suggestion-list

与 data 接口使用相同筛选;读取 count 判断总条数。分页未穷尽时不能假定没有待采。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
RELATED_TYPEinteger是销售固定 2
RELATED_IDinteger是销售单 ID
28 · 查询采购供应商GET /purchase/supplierOptions

候选不等于可下单;生成时仍校验供应商与产品适用规则。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

29 · 查询采购仓库GET /purchase/warehouseOptions

本场景使用与销售匹配的实体仓。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

30 · 从待采购生成采购单POST /purchase/generateFromSuggestion

返回 data.purchaseId。锁定建议后进入采购审核,避免重复调用生成多单。履约方式必须与源建议一致。本场景为 SELF_WAREHOUSE。

请求类型:json;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idsarray是本次选中的待采购建议 ID
supplierIdinteger是供应商 ID
warehouseIdinteger是实体仓 ID
fulfillmentTypestring是本场景固定 SELF_WAREHOUSE
itemsarray是逐行填写数量与采购价,id 对应 ids
{
  "ids": [
    10008
  ],
  "supplierId": 10009,
  "warehouseId": 10004,
  "fulfillmentType": "SELF_WAREHOUSE",
  "items": [
    {
      "id": 10008,
      "purchaseNum": 2,
      "purchasePrice": 60
    }
  ]
}
31 · 采购单头GET /purchase/detail/header

核对供应商、仓库、采购金额及审核状态。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
32 · 采购明细GET /purchase/detail/items

核对数量、价格及销售来源。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
33 · 关联应付GET /purchase/detail/payables

记录 ID、EXPECTED_AMOUNT、PAID_AMOUNT、PAYMENT_STATUS。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
34 · 关联入库GET /purchase/detail/inbound

每行 ID 为入库单 ID;不要用采购单 ID 代替。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
idinteger是业务单据 ID,取上一步响应;不是单号
35 · 入库详情GET /warehouse/inbound/detail

data.inbound 为单头、items 为业务行(inboundItemId)、labels 为标签(ID、LABEL_CODE、INBOUND_ITEM_ID)。按关联关系取 ID。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
inboundIdinteger是入库单 ID
36 · 普通库存一键清点POST /warehouse/inbound/review/oneKeyComplete

只在真实收货数量已确认、整单剩余数量全部到齐时使用;部分到货用人工清点。普通产品的普通库存为 2。本场景清点后仍需实体仓上架;系统生成标签,不自己编造。

请求类型:form;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
inboundIdinteger是入库单 ID
37 · 查询库房GET /warehouse/inbound/location/rooms

逐级选择真实库位;不可随意取第一条。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
warehouseIdinteger是上一级位置 ID
38 · 查询货区GET /warehouse/inbound/location/areas

逐级选择真实库位;不可随意取第一条。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
warehouseRoomIdinteger是上一级位置 ID
39 · 查询货架GET /warehouse/inbound/location/racks

逐级选择真实库位;不可随意取第一条。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
warehouseAreaIdinteger是上一级位置 ID
40 · 查询库位GET /warehouse/inbound/location/locations

逐级选择真实库位;不可随意取第一条。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
warehouseRackIdinteger是上一级位置 ID
41 · 按标签确认上架POST /warehouse/inbound/putaway/scan/confirm

逐商品分组提交未上架标签,全部位置必须属于所选实体仓。上架影响库存,先核对实物。

请求类型:json;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
inboundItemIdinteger是入库业务行 ID
warehouseIdinteger是仓库 ID
labelCodesarray是本次实际上架的标签码,取 labels.LABEL_CODE
warehouseRoomIdinteger是库房 ID
warehouseAreaIdinteger是货区 ID
warehouseRackIdinteger是货架 ID
warehouseLocationIdinteger是库位 ID
{
  "inboundItemId": 10010,
  "warehouseId": 10004,
  "labelCodes": [
    "从入库详情读取的真实标签码"
  ],
  "warehouseRoomId": 10011,
  "warehouseAreaId": 10012,
  "warehouseRackId": 10013,
  "warehouseLocationId": 10014
}
42 · 出库作业详情GET /warehouse/outbound/detail

data.outbound、items、candidateLabels、reviewedLabels、packages。items 的 outboundItemId 提交时字段名为 outboundDetailId;packages 的 PACKAGE_ID 用于后续包裹操作。

请求类型:查询参数;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
outboundIdinteger是出库单 ID
43 · 记录拣货POST /warehouse/outbound/pick/start

operateNum 是累计数;根据最新 pickedNum 计算。实际拣货后才登记。

请求类型:json;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
outboundDetailIdinteger是出库业务行 ID,不是出库单 ID
operateNumnumber是本行累计拣货数,不是本次增量
{
  "outboundDetailId": 10015,
  "operateNum": 2
}
44 · 完成拣货POST /warehouse/outbound/pick/complete

请求根节点是数组。每行传已拣数量;完成后重读出库详情核对待复核状态。

请求类型:json;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
outboundDetailIdinteger是出库业务行 ID,不是出库单 ID
operateNumnumber是本行累计拣货数,不是本次增量
[
  {
    "outboundDetailId": 10015,
    "operateNum": 2
  }
]
45 · 按标签复核POST /warehouse/outbound/review/scan

每次扫描一个真实候选标签,按标签数量累加,不是每扫一次加 1;重复扫码会失败。普通库存内部标签可从候选数据取得,不要求打印。复核完成自动进入待打包。

请求类型:json;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
outboundIdinteger是出库单 ID
outboundDetailIdinteger是对应出库业务行 ID
labelCodestring是实际出库标签码
46 · 创建包裹POST /warehouse/outbound/package/create

返回 data 为包裹实体(packageId);随后重读出库详情,从 packages 的 PACKAGE_ID 核对新包裹。只装入已复核商品。

请求类型:json;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
outboundIdinteger是出库单 ID
verifyLocationstring否打包作业位置说明
remarkstring否包裹备注
itemsarray是包裹商品行
{
  "outboundId": 10016,
  "items": [
    {
      "outboundItemId": 10015,
      "packageQty": 2
    }
  ]
}
47 · 完成打包POST /warehouse/outbound/package/complete

实物已完成打包后登记。

请求类型:json;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
packageIdinteger是包裹 ID
48 · 登记重量POST /warehouse/outbound/package/weigh

按实际称重结果填写。

请求类型:json;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
packageIdinteger是包裹 ID
weightnumber是实际重量,必须大于 0;与界面重量单位一致
49 · 登记面单POST /warehouse/outbound/express/generate

本接口登记承运商和运单号,不保证调用快递公司购单。

请求类型:json;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
packageIdinteger是包裹 ID
expressCompanystring是真实承运商名称
expressNostring是已取得的真实运单号
50 · 标记面单已打印POST /warehouse/outbound/express/markPrinted

只在实际完成打印后调用,接口成功不代表打印机执行成功。

请求类型:json;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
packageIdinteger是包裹 ID
51 · 确认包裹发货POST /warehouse/outbound/shipping/confirmPackage

人工确认货物已经交运后调用。需打包、称重、面单及打印状态满足要求。登记成功后重读销售及出库状态;不会替用户完成物理交运。

请求类型:json;完整嵌套字段见下载包。示例 ID 需替换。

字段类型必填说明
packageIdinteger是包裹 ID

用你的一笔业务验证 AI 协作

告诉我们你要管理的商品、订单和仓库,先确认业务流程,再讨论 AI 接入方式。

联系获取试用账号

WorkBuddy 接入方式参考其官方产品说明与技能说明。本包为可供 AI 读取的对接资料。