## 预算执行率阈值预警 {.case data-case-id="043"}

| 字段 | 值 |
| --- | --- |
| 案例编号 | `043` |
| 行业 / 部门 | SaaS / 财务 |
| 角色 | 财务负责人 |
| 难度 | `复杂` |
| 调用来源 | `schedule`（定时由获授权 Agent 经 App/Extension 读取预算与实际执行数据） |

<!-- slot: 目标 -->
预算超支很少突然发生，而是执行率一点点爬过阈值没人看见。目标：每日定时让获授权 Agent 读取各部门的预算与实际执行数据，逐部门计算执行率并四路分流，路由顺序是数据完整性校验先行：数据源不可达或预算未登记的部门按取数失败或"待确认"单列，不判档、不进红线，不基于残缺数据判定超支；通过校验的有效数据里，执行率超红线（执行率超 100%）的部门 100% 强制进入财务负责人人工确认、绝不自动通报；临近阈值的预警清单交财务负责人确认后再通知；正常的归档发汇总回执。财务数据最小披露：金额脱敏为区间，科目余额不外带。指标：红线部门从读取到财务负责人收到确认请求的中位数 < 4 小时；红线部门 0 例自动通报。

<!-- slot: 边界 -->
- **覆盖**：定时读取预算与执行数据、逐部门计算执行率、四路分流（先做数据完整性 fail-closed 校验：取数失败或预算未登记单列、不判档不进红线；有效数据按红线强制人工、临近阈值经确认后通知、正常归档）。
- **不覆盖**：自动冻结预算、自动调增调减、自动通报、生成调整方案。
- **假设**：有一个经授权能读取预算与执行数据的 Agent（通过 App/Extension）；红线与预警阈值作为输入提供；部门负责人仅用系统记录。

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

```text
帮我创建一个 Workflow：每日定时由获授权的核对 Agent 经 App/Extension 读取各部门的预算与实际执行数据，逐部门计算执行率并返回（部门、执行率、所处档位、依据摘要、数据是否完整）。App/Extension 在读取侧即完成区间化与令牌化，Agent 只接收部门、执行率、档位、依据摘要与状态等白名单字段，具体科目余额不进入工作流与日志，只用百分比与金额区间（如 1000 元以下 / 1000 元及以上）。
触发：定时（计划）发起调用，调用时带入红线与预警阈值（如红线 100%、预警 85%）、财务负责人、团队频道与核对 Agent。
结果分流（先做数据完整性 fail-closed 校验，再对有效数据按红线判档，按优先级从高到低依次判断）：
  数据完整性校验未通过（数据源不可达或预算未登记）：取数失败或该部门标"待确认"单列，告警失败、留审计时间戳，按重试上限重试，仍失败则升级到值班频道；该部门不判档、不进红线，绝不基于残缺数据判定超支，也不并入任何档位——这是第一道判断，先于红线。
  超过红线（有效数据执行率超过设定红线，如 100%）：一律强制进入财务负责人人工确认后才通知部门负责人——这是有效数据里的最高优先级，命中即短路，绝不自动通报；红线判定仅基于已校验有效的数据。
  临近阈值（执行率超过预警阈值但未过红线，如 > 85%）：生成预警清单交财务负责人确认，确认后通知相应部门负责人并留审计时间戳；驳回则本次失败结束并留审计，不自动改判档位。
  正常（执行率未超过预警阈值）：归档并发汇总回执（仅部门数与档位分布）留审计时间戳，不打扰任何人；归档失败按重试上限重试，仍失败则升级到值班频道并保留待归档内容供人工补归档。
审批：红线与临近阈值都必须经财务负责人确认后才通知部门负责人；驳回即本次失败结束并留审计，不自动改判；审批不设自动超时，无默认通过/否决。
取数失败（预算或执行数据不可达、数据陈旧）：告警失败、留审计时间戳，按重试上限重试，仍失败则升级到值班频道；与"正常归档"是两条不同路径，不互相替代。
异常：核对 Agent 回传不合结构就停在等待点等它重新提交，不自动重跑；通知发送失败按重试上限重试，仍失败则升级到值班频道并保留待发内容供人工补发。
完成：确认后通知、归档回执、待确认单列、取数失败各自留审计时间戳后结束。
```

<!-- slot: 流程 -->
![案例 043 预算执行率阈值预警：定时让获授权 Agent 经 App/Extension 读取预算与实际执行数据并逐部门计算执行率（App 在读取侧即完成区间化与令牌化，Agent 只接收白名单字段）；先做数据完整性 fail-closed 校验——数据源不可达或预算未登记按取数失败告警留审计重试升级或标待确认单列、不判档不进红线、不基于残缺数据判定超支；有效数据再按红线判档：超过红线强制进入财务负责人人工确认后才通知部门负责人、绝不自动通报，临近阈值预警清单经财务负责人确认后通知，正常归档发汇总回执，金额脱敏为区间，均留审计时间戳](../../../media/cases/fig-case-043-01-flow.svg){#fig-case-043-01 width=92%}

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

1. **定时触发**：计划到点（每日）发起一次调用，带入红线与预警阈值、财务负责人、团队频道与核对 Agent。
2. **计算执行率**：获授权 Agent 经 App/Extension 读取预算与执行数据，App 在读取侧即完成区间化与令牌化，Agent 逐部门计算执行率并回传白名单字段（部门、执行率、档位、依据摘要、数据是否完整）；回传不合结构时停在原等待点，等其重新提交，不自动重跑。
3. **四路分流（先做数据完整性校验，再对有效数据先判红线、再判档位）**：
   - **数据完整性校验未通过（最优先）**：数据源不可达取数失败告警留审计、按重试上限重试、仍失败升级到值班频道；预算未登记的部门标"待确认"单列，不判档、不进红线，不并入任何档位，不基于残缺数据判定超支。
   - **超过红线**：已校验有效数据里执行率超过设定红线（如 100%）的部门，强制进入财务负责人人工确认后才通知部门负责人，绝不自动通报（红线是路由条件，不是仅返回的字段；红线判定仅基于已校验有效的数据）。
   - **临近阈值**：执行率超过预警阈值（如 > 85%）但未过红线的部门，预警清单交财务负责人确认后通知部门负责人并留审计；驳回则失败结束并留审计。
   - **正常**：归档并发汇总回执（仅部门数与档位分布），留审计时间戳；归档失败按重试上限重试，仍失败则升级到值班频道并保留待归档内容供人工补归档。

<!-- slot: 配置 -->
你不需要手写代码或配置。把上面的提示词发给 Loop，AI 会在后台画出这个"定时核对 + 红线强制人工 + 四路分流"流程——它知道"计算执行率"需要一个发消息并等待回调的 Agent 环节、"先做数据完整性校验、再先判红线再判档位"需要一个条件路由且完整性校验与红线优先级最高、"财务负责人确认"需要一个审批环节、通知与回执各需要发消息环节。AI 还会在后台校验流程结构是否完整，你不必关心这些细节。

<!-- slot: 异常 -->
- **真超支部门被误判为正常**：最危险的漏判。路由顺序上数据完整性校验先行，校验通过的部门里，"执行率超过红线"是永远强制人工确认的最高优先级路径，命中即短路，不与置信度折中，也不落入正常归档。
- **预算或执行数据源不可达、陈旧**：不当作"正常"或静默结束，而是告警失败、留审计时间戳，按重试上限重试；仍失败则升级到值班频道由人工确认；该部门不判档、不进红线。
- **预算未登记**：该部门标"待确认"单列，不猜预算值、不用历史预算替代，不基于残缺数据判定超支。
- **归档失败**：按重试上限重试，仍失败则升级到值班频道并保留待归档内容供人工补归档。
- **部门负责人缺失**：Agent 不从部门名猜负责人，该字段标"待确认"，由财务负责人确认时补全。
- **财务负责人驳回**：失败结束并留审计；要重新通知就再发起一次确认，没有"AI 自动改判"。
- **通知发送失败**：按重试上限重试投递；超过上限则升级到值班频道，并保留待发内容补发。
- **核对 Agent 回传不合结构**：本次完成请求被拒绝，停在等待点等其修正后重新提交，不自动重跑。
- **长时间无人审批**：审批本身不设自动超时，流程停在等待状态。若业务需要响应时限，由另一条定时检查的 Workflow 扫出超时项通知财务负责人。

<!-- slot: 审批 -->
红线命中与临近阈值预警都必须经财务负责人确认后才通知部门负责人，正常档位不打扰任何人。确认时能看到执行率、档位与依据摘要（金额均为区间），是"有依据的快速决策"而非盲目拍板。审批只有确认或驳回两种结果，驳回即失败结束并留审计；审批不设自动超时，无默认通过/否决，流程停在等待状态直到有人处理。职责分离天然成立：部门花钱与确认通报不同人。

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

<!-- slot: 验收 -->
- **回放集与基准**：取最近 3 个月预算执行快照（含正常、临近阈值、超红线、预算未登记样本）回放，基准为档位分层；临近阈值判定一致率 ≥ 90%。
- **红线防线**：基准为超红线的部门中，进入确认或被通知的比例（召回率）100%；红线部门自动通报 0 例；红线判定仅基于已校验有效的数据。
- **时效**：红线部门从读取到负责人收到确认请求的中位数 < 4 小时。
- **待确认口径**：预算未登记的部门 100% 单列为"待确认"，0 例基于残缺数据判定超支。
- **最小披露**：全部通知与回执 100% 只含百分比与金额区间，按 10% 抽样核对。
- **源头脱敏**：进入 Agent 消息、Run/Activation/Effect 记录与 App/Extension 工具日志的字段 100% 在白名单内（仅令牌化/白名单字段，原值不进入以上任何一层），并按 10% 抽查四层实际记录。
- **结果可见**：通知、归档回执、待确认单列、取数失败四类结果 100% 各有可见回执。
- **分母与口径**：一致率分母为回放部门日总数；每次运行记录计算与通知时间戳。

### 复用与变体
- **同构迁移**：项目成本执行率预警、云资源配额预警、销售费用预算预警。
- **双审红线**：对红线命中的部门加签分管高管，在提示词里写明。
- **写回系统**：确认后再加一个 Agent 环节，由它通过 App/Extension 把通报结论写回预算档案；写回须是获授权 Agent 经 App/Extension 的幂等动作（幂等键=部门+预警批次），响应未知先查后写、按重试上限有限重试、失败升级值班并置"待处理"保留补偿，全程留审计。若不需要写侧能力，改为只读汇总或仅留 Loop 回执更安全。

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