## 应收发票与回款匹配日报 {.case data-case-id="044"}

| 字段 | 值 |
| --- | --- |
| 案例编号 | `044` |
| 行业 / 部门 | 制造 / 财务 |
| 角色 | 财务专员 |
| 难度 | `进阶` |
| 调用来源 | `schedule`（定时由获授权 Agent 经 App/Extension 读取开票记录与回款流水） |

<!-- slot: 目标 -->
发票开了钱没到、钱到了对不上发票——应收对账最怕的就是这两类差异在月底才集中爆发，催收窗口早过了。目标：每日定时让获授权 Agent 读取开票记录与回款流水并做匹配，已匹配的自动汇总归档；未匹配的（发票已开未回款超期，或回款无对应发票）生成差异清单交财务专员确认后再跟进。差异判定只认系统时间戳，时间戳缺失的单据标"待确认"单列，不用估计值凑数；任一数据源不可达按取数失败处理，绝不当作"全部匹配"。财务数据最小披露：发票号脱敏只显后四位，具体金额不外带。指标：当日产生的差异 100% 出现在次日确认清单里；已匹配结论与人工抽查一致率 ≥ 98%。

<!-- slot: 边界 -->
- **覆盖**：定时读取开票记录与回款流水、自动匹配、已匹配汇总归档、未匹配生成差异清单经财务专员确认后跟进、时间戳缺失单列。
- **不覆盖**：自动核销、自动催收、自动改开票或回款记录、差异的账务处理。
- **假设**：有一个经授权能读取开票记录与回款流水的 Agent（通过 App/Extension）；超期天数口径在调用时作为输入提供；客户与发票信息取系统记录，缺失标"待确认"。

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

```text
帮我创建一个 Workflow：每日定时由获授权的匹配 Agent 经 App/Extension 读取开票记录与回款流水，逐笔比对并返回（发票号后四位、客户标识令牌、匹配状态、超期天数、时间戳是否完整）。App/Extension 在读取侧即完成区间化与令牌化，Agent 只接收发票号后四位、客户标识令牌、金额区间、匹配状态、超期天数与时间戳是否完整等白名单字段，原始财务字段不进入工作流与日志；具体金额不外带，回执只统计笔数与状态。
触发：定时（计划）发起调用，调用时带入超期天数口径、财务专员、团队频道与匹配 Agent。
结果分五类处理：
  未匹配（发票已开未回款超期，或回款无对应发票）：生成差异清单交财务专员确认，确认后转跟进并留审计时间戳；驳回则本次失败结束并留审计，不自动核销。差异判定只用系统时间戳，不用估计值定超期。
  时间戳缺失：该类单据标"待确认"单独成单列清单，不并入已匹配、未匹配或当日无差异，交财务专员核对补正后重新运行。
  已匹配：自动汇总归档并发汇总回执（仅笔数）留审计时间戳，不打扰任何人；归档失败按重试上限重试，仍失败则升级到值班频道并保留待归档内容供人工补归档。
  任一数据源不可达（开票记录或回款流水取不到、数据陈旧）：告警失败、留审计时间戳，按重试上限重试，仍失败则升级到值班频道；绝不当作"全部匹配"。
  当日无差异且无待确认单据：发一条"当日无差异"零结果回执并留时间戳，不静默结束。
审批：差异清单必须经财务专员确认后才转跟进；驳回即本次失败结束并留审计，不自动核销；审批不设自动超时，无默认通过/否决。
异常：匹配 Agent 回传不合结构就停在等待点等它重新提交，不自动重跑；通知发送失败按重试上限重试，仍失败则升级到值班频道并保留待发内容供人工补发。
完成：确认转跟进、归档回执、待确认单列、零结果回执、取数失败各自留审计时间戳后结束。
```

<!-- slot: 流程 -->
![案例 044 应收发票与回款匹配日报：定时让获授权 Agent 经 App/Extension 读取开票记录与回款流水并逐笔匹配（App 在读取侧即完成区间化与令牌化，Agent 只接收白名单字段）；任一数据源不可达按取数失败告警留审计重试升级、绝不当作全部匹配，当日无差异发零结果回执，已匹配自动汇总归档发汇总回执，未匹配差异清单交财务专员确认后转跟进、驳回则失败结束，时间戳缺失单独成待确认单列清单不并入当日无差异，发票号脱敏只显后四位，均留审计时间戳](../../../media/cases/fig-case-044-01-flow.svg){#fig-case-044-01 width=92%}

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

1. **定时触发**：计划到点（每日）发起一次调用，带入超期天数口径、财务专员、团队频道与匹配 Agent。
2. **逐笔匹配**：获授权 Agent 经 App/Extension 读取开票记录与回款流水，App 在读取侧即完成区间化与令牌化，Agent 逐笔比对并回传白名单字段（发票号后四位、客户标识令牌、匹配状态、超期天数、时间戳是否完整）；回传结构不合要求时停在原等待点，等其重新提交，不自动重跑。
3. **五类结果分流**：
   - **任一数据源不可达**：取数失败，告警失败并留审计时间戳，按重试上限重试，仍失败则升级到值班频道，绝不当作"全部匹配"。
   - **已匹配**：自动汇总归档并发汇总回执（仅笔数），留审计时间戳，不打扰任何人；归档失败按重试上限重试，仍失败则升级到值班频道并保留待归档内容供人工补归档。
   - **未匹配**：发票已开未回款超期或回款无对应发票的，生成差异清单交财务专员确认，确认后转跟进并留审计时间戳；驳回则本次失败结束并留审计，不自动核销。
   - **时间戳缺失**：单独成"待确认"单列清单，不并入已匹配、未匹配或当日无差异，交财务专员核对补正后重新运行。
   - **当日无差异（且无待确认单据）**：发零结果回执并留时间戳，不静默结束。

<!-- slot: 配置 -->
你不需要手写代码或配置。把上面的提示词发给 Loop，AI 会在后台画出这个"定时匹配 + 确认跟进 + 多路分流"流程——它知道"逐笔匹配"需要一个发消息并等待回调的 Agent 环节、"按匹配状态分流"需要一个条件路由、"转跟进"前需要一个财务专员的审批环节、"归档、零结果回执与待确认单列"各需要一个发消息环节，并把它们连起来。AI 还会在后台校验流程结构是否完整，你不必关心这些技术细节。

<!-- slot: 异常 -->
- **任一数据源不可达或数据陈旧**：不当作"已匹配""全部匹配"或静默结束，而是告警失败、留审计时间戳，按重试上限重试；仍失败则升级到值班频道由人工确认——宁可当天不出日报，也不能出一份假乐观的"全部匹配"。
- **时间戳缺失**：该类单据标"待确认"单独成单列清单，不用估计值定超期天数，也不并入已匹配、未匹配或当日无差异。
- **客户或发票信息缺失**：Agent 不从金额或往来记录猜对应关系，该笔标"待确认"，由财务专员确认时补全。
- **财务专员驳回**：本次失败结束并留审计；要重新跟进就再发起一次确认，没有"AI 自动核销"。
- **归档失败**：按重试上限重试，仍失败则升级到值班频道并保留待归档内容供人工补归档。
- **通知发送失败**：按重试上限重试投递；超过上限则升级到值班频道，并保留待发内容供人工补发。
- **当日无差异（结果为 0）**：仍发一条零结果回执并留时间戳，让"没消息"变成可核验的记录。
- **匹配 Agent 回传不合结构**：本次完成请求被拒绝，停在等待点等其修正后重新提交，不自动重跑。
- **长时间无人审批**：审批本身不设自动超时，流程停在等待状态。若业务需要响应时限，由另一条定时检查的 Workflow（或值班人员）扫出超时项并通知财务专员。

<!-- slot: 审批 -->
差异清单必须经财务专员确认后才转跟进——"这笔要不要催、是不是串了户"是业务判断，不是字段比对能得出的结论。确认时财务专员能看到发票号后四位、客户标识令牌、差异类型与超期天数（具体金额不外带、发票号已脱敏），所以是"有依据的快速决策"而非盲目拍板。审批只有确认或驳回两种结果，驳回即本次失败结束并留审计，没有"AI 自动核销"。审批不设自动超时，无默认通过/否决，流程停在等待状态直到有人处理。

<!-- slot: 外部系统 -->
本工作流对开票记录与回款流水的读取由获授权 Agent 通过 App/Extension 完成，工作流本身不直接调用外部系统，更不触碰银行接口或任何支付接口。进入 Agent 消息、Run/Activation/Effect 记录与 App/Extension 工具日志的字段以白名单为准（仅令牌化/白名单字段，原值不进入以上任何一层），原始财务字段在源头即被区间化/令牌化，并按 10% 抽查四层实际记录。团队频道作为调用输入提供；两个数据源的访问凭据均用 `<token>` 占位，由 Agent 运行时从密钥引用。任一数据源不可达或数据陈旧属于取数失败，走失败回执与升级，不当作"全部匹配"。全程遵循财务数据最小披露：发票号脱敏只显后四位，具体金额与银行账号不出现在任何提示、示例或回执里。

<!-- slot: 验收 -->
- **回放集与基准**：取最近 60 天开票与回款配对样本（含已匹配、超期未回款、回款无发票、时间戳缺失样本）回放，人工基准答案为逐笔匹配结论；已匹配判定与基准一致率 ≥ 98%。
- **时效**：当日产生的差异 100% 出现在次日确认清单里；差异清单从生成到财务专员收到确认请求的中位数 < 4 小时。
- **待确认口径**：时间戳缺失的单据 100% 标"待确认"单列，0 例用估计值定超期或并入已匹配。
- **失败兜底**：任一数据源不可达时 100% 走取数失败路径，0 例输出"全部匹配"回执。
- **最小披露**：全部回执与通知 100% 只含发票号后四位与笔数统计，按 10% 抽样核对，不出现发票号全号、具体金额或银行账号。
- **源头脱敏**：进入 Agent 消息、Run/Activation/Effect 记录与 App/Extension 工具日志的字段 100% 在白名单内（仅令牌化/白名单字段，原值不进入以上任何一层），并按 10% 抽查四层实际记录。
- **结果可见**：确认转跟进、归档回执、待确认单列、零结果回执、取数失败五类结果 100% 各有可见回执，不出现静默成功。
- **分母与口径**：一致率分母为回放笔数总数；每次运行记录匹配、确认与通知时间戳。

### 复用与变体
- **同构迁移**：应付发票与付款匹配、采购订单与到货匹配、平台佣金与流水对账。
- **分级跟进**：超期超过 30 天的差异确认后同时抄送销售负责人，在提示词里写明。
- **写回系统**：确认后再加一个 Agent 环节，由它通过 App/Extension 把"已转跟进"状态写回应收台账；写回须是获授权 Agent 经 App/Extension 的幂等动作（幂等键=平台签发的唯一不可逆记录令牌+跟进事项版本+写入目标），响应未知先查后写、按重试上限有限重试、失败升级值班并置"待处理"保留补偿，全程留审计。若不需要写侧能力，改为只读汇总或仅留 Loop 回执更安全。

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