商城与库存示例

非规范性业务示例:用商品文案、发布、改价、库存查询和调整,理解风险、审批、任务限制与恢复边界。

商城与库存风险工作表

Status: Non-normative examples(非规范性示例)

适用:ACC v1,规范修订 1.0.5

English

这两份合成 OpenAPI 服务展示业务前提下的评审选择,不是通用零售风险评级、已实现服务或跨系统执行证据。实际业务所有者在采用前需要审阅自身数据、后果、权限和审批规则。不能仅从 HTTP 动词或名称推断风险。

示例业务前提

一个商品租户使用固定币种。所有操作需要可信主体,业务系统仍独立检查该主体的当前权限。草稿编辑不能影响已上架商品,不能改价或调整库存。上架与库存调整每次都需要审批。改价采用示意性的绝对价格条件,并叠加权威的折扣和毛利策略;ACC 高风险本身不规定一种通用审批流程。

示例服务的 description 描述假设实现应履行的职责,YAML 本身不执行这些职责。对象 ID 限定在各自服务及租户中,同名或相同 ID 不会关联跨系统权限。示例不包含凭据或真实服务地址。

各操作的评审选择

下表每项都是 Example,不新增 ACC 规则。“审阅者”是业务角色,实际采用时应指定责任人。

操作与对象 单操作合理最坏后果;是否对外生效 ACC 选择 主体与最终 Authority 自主程度与批量场景 ACC 之外的参数/累计控制 恢复前提 审阅者
editProductDraft:一个未发布商品 草稿文字/图片错误,产生返工;尚未公开 medium;可信主体;无无条件 ACC 审批 已验证编辑者;商品后台校验租户/对象及草稿状态 选定任务内允许编辑;100 次变更需单独累计评审 可改字段、URL 策略、对象集、版本冲突;按明确任务策略统计受影响对象及变更尝试 业务快照可能支持恢复,但需版本/冲突校验;不是自动回滚 商品负责人
publishProduct:一个草稿及渠道 错误商品公开,可能被购买 highapproval.required: true 已验证发布者;业务校验审批人、渠道和上架条件 本示例每次调用前人审;任务授权不能绕过 冻结目标/渠道/版本;批量发布另设限制 下架能限制后续影响,不能撤销既有购买或曝光 商品运营负责人
changeProductPrice:一个商品 经济损失或错误公开价格 highprice_minor > 100000 触发条件审批 已验证定价主体;业务按当前价格、毛利和折扣判断 独立定价任务;下文100件商品内容任务禁止使用 整数最小货币单位;服务端计算降价;对象/版本核验;按业务状态评估累计价格影响 恢复旧价也需新的授权及版本校验;原购买不受撤回 定价负责人
getStock:一个仓库/SKU 泄露商业敏感库存;无业务变更 lowreadonly: trueaudit.sensitive: true 已验证读取者;库存系统校验租户/仓库 限选定仓库读取;反复读取不授予枚举权限 逐对象权限、结果最小化、查询量和导出策略 有权限可重读;库存结果可以正常变化 库存数据负责人
adjustStock:一个仓库/SKU 超卖或可用量失真,影响订单和履约 high;delta 条件不命中也无条件审批 已验证操作员;库存系统校验审批人及库存规则 每次调整人审;与只读库存任务分离 非零整数 delta;预留/非负库存;预期版本;累计调整 重复 delta 不安全;先核对原操作;补偿调整需审阅当前状态 仓储运营负责人

审批与参数细节

Normative reference:SPEC §4.6

  • approval.required: true 无条件生效。库存调整即使 delta: 1 也触发审批意图,附加条件不能豁免它。
  • required 为 false 或省略时,任意条件命中即产生审批意图。价格示例中 100001 命中、100000 不命中;单位是整数最小货币单位,不是界面展示金额。两种结果都不能覆盖业务授权、折扣审批或更严格的运行时策略。
  • "100001" 这种字符串不符合整数参数要求,不能隐式转换或当成条件不匹配放行。
  • 改价接口不接受模型自报折扣比例作为权威依据。降价幅度由服务端按当前价格计算。逐次绝对价格条件既不计算该幅度,也不控制多次调用累计影响。
  • 参数留在 OpenAPI parametersrequestBody 中。expected_version 是示例业务参数,不是 ACC 字段,也不证明服务端已经实现并发控制。

全部示例写操作声明 idempotent: false,不承诺可安全重试。稳定调用 ID、HTTP 方法或预期版本字段本身不提供业务幂等。若写请求可能已到服务端,应沿原执行关联取得权威结果,再决定后续操作。只读操作可用相同参数重试,但库存观测值可能变化。

一个涉及两个系统的任务

Example 任务:“给选定的 100 件未发布商品更新图片和文案,读取库存核对;禁止改价和调整库存。”

以下 Recommended 实现工作表放在 x-agent-capability 之外:

任务项 执行前需要确定的内容 应检查的证据
原目标 已选商品/库存服务身份及各自可信主体、租户;有需要时审阅 SKU 映射 未选系统零请求;相同 ID 不切换到其他目标
允许工作 商品草稿文案/图片修改及库存查询;明确商品/仓库集 改价、调整库存、编辑已上架商品、集合外对象均被拒
批量与并发 明确预算按对象、调用、变更还是失败计量,派发前原子预占 并发不超预算;原调用恢复不能重置或重复扣额度
人工控制 预览任务边界;保留逐操作原审批;意外扩大时暂停新派发 暂停能拦住新调用,并准确报告已接受、待处理、失败和结果未知
完成与恢复 保留原目标及执行关联,展示部分完成 结果未知的写操作先核对,不能改目标重复执行
证据与数据 脱敏保存必要决策/结果;会话和文件存储策略分别管理 凭据不进入日志;业务所需图片 URL 不要求归档所有聊天附件

本工作表没有为 ACC 增加 task_budgetautonomy_level 或对象白名单字段。两份声明也不实现跨系统事务或保证回滚。已有语义覆盖和缺少的实现测试见覆盖索引

校验声明

在已经安装依赖的源码工作区运行:

node bin/acc-validate.mjs examples/openapi-catalog-service.yaml
node bin/acc-validate.mjs examples/openapi-inventory-service.yaml
npm run check

作者校验器检查 ACC 提取及声明/条件诊断,不是完整 OpenAPI 校验器或业务集成测试。仓库新增示例不会自动包含在当前 npm 包的显式文件清单中。