## 仓库循环盘点任务分发与差异确认 {.case data-case-id="064"}

| 字段 | 值 |
| --- | --- |
| 案例编号 | `064` |
| 行业 / 部门 | 零售 / 仓储 |
| 角色 | 仓储主管 |
| 难度 | `进阶` |
| 调用来源 | `schedule`（定时由获授权 Agent 经 App/Extension 读取 WMS 盘点计划） |

<!-- slot: 目标 -->
循环盘点靠主管在表格里排人排库区，漏发、重发时有发生，差异出来后也没人对账。目标：每周定时让获授权 Agent 读取 WMS 盘点计划，生成本周盘点任务清单并分发到对应库区负责人；盘点结果回传后，账实不符的差异清单经仓储主管确认再发起复盘，复盘由人执行、确认后由系统调整，工作流不动库存数据。指标：本周计划内库区任务分发覆盖率 100%，重复分发 0 例；差异确认到复盘发起的中位数 ≤ 1 个工作日；每次盘点结果 100% 留时间戳与操作人。

<!-- slot: 边界 -->
- **覆盖**：定时读取盘点计划、生成本周任务清单并分发库区负责人、盘点结果回传分流、差异清单经主管确认后发起复盘、零计划与取数失败回执、重复分发幂等。
- **不覆盖**：在 WMS 里调整库存数据、自动生成盘盈盘亏凭证、自动排班、复盘执行本身。
- **假设**：有一个经授权能读取 WMS 盘点计划与盘点结果的 Agent（通过 App/Extension）；库区负责人在计划里以受控令牌呈现（权限受控且 Agent 无法反查原值，展示名仅由仓储 App 发送时回填），仅用计划字段里带的记录，缺失标"待确认"，不从库区名或历史记录猜人。

<!-- slot: 提示词 -->
把下面这段发给 Loop，它会在后台帮你创建这个 Workflow：

```text
帮我创建一个 Workflow：每周定时由获授权的盘点 Agent 经 App/Extension 读取 WMS 的本周盘点计划，生成本周盘点任务清单（库区、盘点范围、计划日期、库区负责人），分发到对应库区负责人。分发按库区串行衔接：先分发库区 A 并等待其回传，再分发库区 B 并等待其回传，各库区结果依次汇入汇总处后再进入分流；同一库区同一周期的任务只分发一次（幂等），重复调用只补发缺失项、不重复打扰。
触发：定时（计划）发起调用，调用时带入仓储频道、盘点 Agent 和审批人（仓储主管）。
第一阶段（任务分发）：库区负责人以受控令牌呈现（权限受控且 Agent 无法反查原值，展示名仅由仓储 App 发送时回填），只用盘点计划里带的字段，字段缺失标"待确认"交仓储主管补派，不猜人；本周无盘点计划时发一条"本周无盘点计划"汇总回执并留时间戳，不静默结束。
第二阶段（盘点结果回传后分三类处理，各库区等待点回传不合结构时停在各自等待点重新提交，不影响已汇入的结果）：
  无差异（全部账实相符）：发盘点完成回执并留审计时间戳与操作人。
  有差异（存在账实不符）：差异清单（库区、物料代号、账面数与实盘数差异、盘点时间戳）交仓储主管确认，确认后发起复盘（复盘由人执行，确认后由系统调整，工作流不动库存数据），留审计时间戳与操作人；驳回则本次失败结束、留审计，不自动复盘。
  取数失败（WMS 不可达或盘点计划 / 结果陈旧）：告警失败、留审计时间戳，按重试上限重试，仍失败则升级到值班频道；不当作"本周无盘点计划"，也不当作盘点完成。
审批：差异清单发起复盘前必须经仓储主管确认，盘点与库存调整职责分离；审批为二值确认或驳回，不设自动超时，无默认通过/否决。
异常：盘点 Agent 回传不合结构就停在对应库区的等待点等它重新提交，不自动重跑；通知发送失败按重试上限重试，仍失败则升级到值班频道并保留待发内容供人工补发。
完成：分发、盘点完成回执、复盘发起、零计划回执各自留审计时间戳后结束。
```

<!-- slot: 流程 -->
![案例 064 仓库循环盘点：每周定时让获授权 Agent 读取 WMS 盘点计划生成本周任务，分发任务后按库区串行衔接——等待库区 A 回传（回传不合结构停在 A 的等待点重新提交）→ 等待库区 B 回传（回传不合结构停在 B 的等待点重新提交）→ 汇总（仅用计划字段，缺失待确认，分发幂等，重复调用只补缺失项）；汇总后分三类：无差异发完成回执，有差异交仓储主管确认后发起复盘（复盘由人执行、系统调整，工作流不动库存数据），WMS 不可达按取数失败告警留审计重试升级；本周无盘点计划发零结果回执](../../../media/cases/fig-case-064-01-flow.svg){#fig-case-064-01 width=92%}

如上图所示，正常路径、人工决策与异常同时可见：

1. **定时触发**：计划到点（每周）发起一次调用，带入仓储频道、盘点 Agent 与审批人（仓储主管）。
2. **读取计划并分发（串行衔接）**：获授权 Agent 经 App/Extension 读取 WMS 本周盘点计划，生成任务清单（库区、盘点范围、计划日期、库区负责人受控令牌）——先分发库区 A 并等待其回传，再分发库区 B 并等待其回传，各库区结果依次汇入汇总处后再进入分流；分发幂等，同一库区同一周期只分发一次，重复调用只补发缺失项；负责人以受控令牌呈现（Agent 无法反查原值，展示名仅由仓储 App 发送时回填），仅用计划字段，缺失标"待确认"交主管补派。某库区回传结构不合要求时停在该库区自己的等待点，等其重新提交，不自动重跑。
3. **本周无盘点计划**：发一条零结果汇总回执并留时间戳，不静默结束，也不当作取数失败。
4. **盘点结果汇总后三路分流**：
   - **无差异**：全部账实相符，发盘点完成回执并留审计时间戳与操作人。
   - **有差异**：账实不符的差异清单（库区、物料代号、账面数与实盘数差异、盘点时间戳）交仓储主管确认；确认后发起复盘——复盘由人执行，确认后由系统调整，工作流不动库存数据——并留审计时间戳与操作人；驳回则本次失败结束、留审计，不自动复盘。
   - **取数失败**：WMS 不可达或计划、结果陈旧，告警失败并留审计时间戳，按重试上限重试，仍失败则升级到值班频道，不当作"本周无盘点计划"或盘点完成。

<!-- slot: 配置 -->
你不需要手写代码或配置。把上面的提示词发给 Loop，AI 会理解意图、在后台画出这个"定时取数 + 库区串行衔接与汇总 + 差异确认"流程——它知道"读盘点计划与结果"各需要一个发消息并等待回调的 Agent 环节、"分发到对应负责人"需要先分发库区 A 并等待回传、再分发库区 B 并等待回传的串行衔接（各自带回传不合结构的重交回路）、"分三种结果"需要一个条件路由、"主管确认"需要一个审批环节。AI 还会在后台校验流程结构是否完整，你不必关心这些技术细节。

<!-- slot: 异常 -->
- **WMS 不可达或计划、结果数据陈旧**：不当作"本周无盘点计划"或盘点完成，而是告警失败、留审计时间戳，按重试上限重试；仍失败则升级到值班频道由人工确认。
- **库区负责人字段缺失**：Agent 不从库区名或历史记录猜人，该任务标"待确认"交仓储主管补派，确认前不分发。
- **主管驳回复盘**：本次失败结束并留审计；要重新复盘就再发起一次确认，没有"AI 自动改判"，更没有工作流替人调库存。
- **重复分发**：同一库区同一周期的任务只分发一次；因重试或补跑再次进入分发时按幂等去重，只补发缺失项，不重复打扰负责人。
- **通知发送失败**：按重试上限重试投递；超过上限则升级到值班频道，并保留待发内容供人工补发。
- **盘点 Agent 回传不合结构**：本次完成请求被拒绝，停在对应库区自己的等待点等其修正后重新提交，不自动重跑——A 与 B 各有重交回路，重交不回退到任务分发。
- **长时间无人审批**：审批本身不设自动超时，流程停在等待状态。若业务需要响应时限，由另一条定时检查的 Workflow（或值班人员）扫出未确认的差异清单并提醒主管。

<!-- slot: 审批 -->
差异清单在发起复盘之前必须经仓储主管确认，这是盘点职责分离的落点：盘点的是库区负责人，确认差异、批准复盘的是主管，调整库存的是确认后的系统操作，工作流全程不动库存数据。确认时主管能看到库区、物料代号、账面数与实盘数差异以及盘点时间戳与操作人，是"有依据的快速决策"。审批只有确认或驳回两种结果，驳回即本次失败结束并留审计，不自动改判，也不设自动超时——催办属于另一条定时编排。

<!-- slot: 外部系统 -->
本工作流对 WMS 盘点计划与盘点结果的读取由获授权 Agent 通过 App/Extension 完成，工作流本身不直接调用 WMS，更不写库存数据。仓储频道作为调用输入提供；WMS 访问凭据用 `<token>` 占位，由 Agent 运行时从密钥引用。WMS 不可达或数据陈旧属于取数失败，走失败回执与升级，不当作"本周无盘点计划"。复盘由人在现场执行，库存调整由主管确认后在 WMS 里由系统完成；通知与审计内容只用物料代号与库区负责人受控令牌，不外带客户订单与供应商信息。进入 Agent 消息、Run/Activation/Effect 记录与 App/Extension 工具日志的字段以白名单为准（仅令牌化/白名单字段，原值不进入以上任何一层），并按 10% 抽查四层实际记录。

<!-- slot: 验收 -->
- **回放集与基准**：取最近 12 周 80 条盘点记录（含账实相符、差异、计划字段缺失、WMS 中断样本）回放，人工基准答案为既定任务清单与差异判定；差异判定与基准一致率 ≥ 95%。
- **分发幂等**：同一库区同一周期重复回放 3 次，重复分发 0 例，缺失项 100% 补发；计划内库区任务分发覆盖率 100%。
- **字段口径**：负责人缺失样本 100% 标"待确认"交主管补派，0 例出现猜测的负责人。
- **数据源防线**：WMS 不可达样本 100% 出取数失败回执并升级，0 例被当作"本周无盘点计划"或盘点完成。
- **职责分离与审计**：库存调整 100% 发生在主管确认之后且由系统完成，工作流 0 例写库存；每次盘点结果 100% 留时间戳与操作人。
- **源头脱敏**：进入 Agent 消息、Run/Activation/Effect 记录与 App/Extension 工具日志的字段 100% 在白名单内（仅令牌化/白名单字段，原值不进入以上任何一层），库区负责人以受控令牌呈现、原值可被 Agent 反查 0 次，按 10% 抽查四层实际记录。
- **结果可见**：分发、盘点完成、复盘发起、零计划、取数失败各类结果 100% 各有可见回执；差异确认到复盘发起的中位数 ≤ 1 个工作日；每次运行留审计时间戳。

### 复用与变体
- **同构迁移**：门店存货抽盘任务分发、固定资产年度盘点、样品库清点与差异确认。
- **分级差异**：差异金额超过阈值的清单加签仓储与财务双确认，在提示词里写明，AI 会在流程里多加一个审批环节。
- **写回 WMS**：复盘完成后加一个 Agent 环节，由它通过 App/Extension 把复盘结论写回 WMS 留档，库存数量仍由系统内确认流程调整；写回须是获授权 Agent 经 App/Extension 的幂等动作（幂等键=库区+盘点周期），响应未知先查后写、按重试上限有限重试、失败升级值班并置"待处理"保留补偿，全程留审计。若不需要写侧能力，改为只读汇总或仅留 Loop 回执更安全。

<!-- slot: 媒体槽位 -->
<!-- media: fig-case-064-01-flow.svg -->
