## 管理层财务月度摘要草拟 {.case data-case-id="048"}

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

<!-- slot: 目标 -->
每月管理层要看财务摘要，财务负责人却要花两天从各科目里捞数、核对、写成稿——耗时倒在其次，最怕两种事故：把未结账科目当已结账数写了出去，或者把客户级、供应商级的敏感明细带进了管理层文档。目标：每月定时让获授权 Agent 经 App/Extension 读取已结账月度数据，草拟管理层摘要（收入、成本、现金流趋势），财务负责人确认后分发管理层。两条硬约束：一，摘要全部来自已结账数据，未结账科目一律标"待结账·待确认"，绝不估算补数；二，摘要只含汇总级区间数字，不含任何客户级或供应商级明细。指标：摘要中未结账科目 100% 标注"待结账·待确认"、估算补数 0 处；分发内容按抽样核对，客户级或供应商级明细出现 0 次。

<!-- slot: 边界 -->
- **覆盖**：定时读取已结账月度数据、草拟管理层摘要（收入、成本、现金流趋势）、财务负责人确认后分发、驳回后失败结束改输入重新发起。
- **不覆盖**：估算未结账科目、编制对外的法定报表、写回财务系统、逐客户或逐供应商的分析。
- **假设**：有一个经授权能读取已结账月度数据的 Agent（通过 App/Extension）；管理层频道与财务负责人在调用时作为输入提供；科目结账状态以财务系统记录为准，工作流不做任何推断。

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

```text
帮我创建一个 Workflow：每月定时由获授权的摘要 Agent 经 App/Extension 读取已结账的月度数据，草拟管理层财务摘要（收入、成本、现金流趋势），返回摘要草稿。App/Extension 在读取侧即完成区间化与令牌化，Agent 只接收汇总级科目、区间数字与结账状态等白名单字段，客户级、供应商级明细在源头即被令牌化，不进入工作流与日志。两条硬约束：摘要全部来自已结账数据，未结账科目一律标"待结账·待确认"，绝不估算补数；摘要只含汇总级区间数字，不含客户级、供应商级明细。
触发：定时（计划）发起调用，调用时带入管理层频道、财务负责人与摘要 Agent。
结果分流：
  草稿完成：呈交财务负责人确认，确认后分发到管理层频道并留审计时间戳；驳回则本次失败结束、留审计时间戳，修改输入或等结账完成后重新发起，不自动改稿重投。
  本期无已结账数据（查询成功但当月尚无任何已结账科目）：发一条"本期无已结账数据"汇总回执并留时间戳，不静默结束，也不当作取数失败。
  取数失败（财务数据源不可达、数据陈旧）：告警失败、留审计时间戳，按重试上限重试，仍失败则升级到值班频道；不当作"本期无已结账数据"，也不进入草拟路径。
审批：摘要分发管理层前必须经财务负责人确认；审批只有确认或驳回两种结果，审批不设自动超时，无默认通过/否决，也没有超时自动分发。
异常：摘要 Agent 回传不合结构就停在等待点等它重新提交，不自动重跑；通知发送失败按重试上限重试，仍失败则升级到值班频道并保留待发内容供人工补发。
完成：分发、驳回、零结果回执、取数失败升级，各自留审计时间戳后结束。
```

<!-- slot: 流程 -->
![案例 048 管理层财务月度摘要草拟：每月定时让获授权 Agent 读取已结账月度数据并草拟摘要（收入、成本、现金流趋势，未结账科目标待结账·待确认不估算，只含汇总级区间数字不含客户级供应商级明细）；草稿呈交财务负责人确认后分发管理层，驳回则失败结束改输入重新发起，本期无已结账数据发零结果回执，数据源不可达按取数失败告警留审计重试升级；回传不合结构停在原等待点](../../../media/cases/fig-case-048-01-flow.svg){#fig-case-048-01 width=92%}

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

1. **定时触发**：计划到点（每月）发起一次调用，带入管理层频道、财务负责人与摘要 Agent。
2. **草拟摘要**：获授权 Agent 经 App/Extension 读取已结账月度数据，App/Extension 在读取侧即完成区间化与令牌化，Agent 只接收白名单字段，草拟收入、成本、现金流趋势并回传；未结账科目一律标"待结账·待确认"，不估算；回传结构不合要求时停在原等待点，等其重新提交，不自动重跑。
3. **人工确认与分流**：
   - **草稿完成**：呈交财务负责人确认；确认后分发管理层频道并留审计时间戳；驳回则本次失败结束、留审计，修改输入或等结账完成后重新发起。
   - **本期无已结账数据**：发零结果汇总回执并留时间戳，不静默结束。
   - **取数失败**：财务数据源不可达或陈旧，告警、留审计时间戳，按重试上限重试，仍失败升级到值班频道。

<!-- slot: 配置 -->
你不需要手写代码或配置。把上面的提示词发给 Loop，AI 会理解意图、在后台画出这个"定时取数 + 草拟 + 人工确认分发"流程——它知道"草拟摘要"需要一个发消息并等待回调的 Agent 环节、"分发前把关"需要一个审批环节、"分发与各类回执"各需要一个发消息环节，并用条件路由把零结果与取数失败区分开。AI 还会在后台校验流程结构是否完整，你不必关心这些技术细节。

<!-- slot: 异常 -->
- **未结账科目被当已结账数写入**：这是摘要最危险的质量事故。草拟约束里明确：只取已结账数据，未结账科目一律标"待结账·待确认"，绝不估算补数；财务负责人确认时再核对一遍。
- **客户级或供应商级明细外带**：摘要只含汇总级区间数字。回执与分发内容按 10% 抽样核对，任何客户级、供应商级明细出现即为事故。
- **财务数据源不可达、数据陈旧**：不当作"本期无已结账数据"或静默结束，而是告警失败、留审计时间戳，按重试上限重试；仍失败则升级到值班频道由人工确认。
- **财务负责人驳回**：本次失败结束并留审计，没有"自动改稿再投"；要重出就修改输入或等结账完成后重新发起一次调用。
- **分发发送失败**：按重试上限重试投递；超过上限则升级到值班频道，并保留待发内容供人工补发。
- **摘要 Agent 回传不合结构**：本次完成请求被拒绝，停在等待点等其修正后重新提交，不自动重跑。
- **长时间无人审批**：审批本身不设自动超时，流程停在等待状态。若业务需要响应时限，由另一条定时检查的 Workflow（或值班人员）扫出超时项并通知财务负责人。

<!-- slot: 审批 -->
摘要分发管理层前必须经财务负责人确认。确认时负责人看到的是完整草稿：哪些科目是已结账数、哪些标着"待结账·待确认"、趋势描述是否有依据，所以这是"有依据的终审"而非走形式。审批只有确认或驳回两种结果，驳回即失败结束并留审计，不设自动超时，也没有"超时自动分发"。若要更严（如涉及预测性表述的段落需加签 CFO），在提示词里写明，AI 会在流程里多加一个审批环节。

<!-- slot: 外部系统 -->
本工作流对已结账月度数据的读取由获授权 Agent 通过 App/Extension 完成，工作流本身不直接调用外部系统，更不写回财务系统。进入 Agent 消息、Run/Activation/Effect 记录与 App/Extension 工具日志的字段以白名单为准（仅令牌化/白名单字段，原值不进入以上任何一层），原始财务字段在源头即被区间化/令牌化，并按 10% 抽查四层实际记录。管理层频道与审批人作为调用输入提供；财务数据源的访问凭据用 `<token>` 占位，由 Agent 运行时从密钥引用。数据源不可达或数据陈旧属于取数失败，走失败回执与升级，不当作"本期无已结账数据"。摘要遵循财务信息最小披露：只含汇总级区间数字，不含客户级、供应商级明细。

<!-- slot: 验收 -->
- **回放集与基准**：取最近 6 个月 12 期月度快照（含已结账、部分结账、完全未结账样本）回放，人工基准答案为既定的摘要要点与待结账科目清单。
- **不估算**：未结账科目 100% 标注"待结账·待确认"，估算补数 0 处；已结账数与财务系统记录一致率 ≥ 99%。
- **最小披露**：摘要与分发内容按 10% 抽样，客户级、供应商级明细出现 0 次，数字 100% 为汇总级区间。
- **源头脱敏**：进入 Agent 消息、Run/Activation/Effect 记录与 App/Extension 工具日志的字段 100% 在白名单内（仅令牌化/白名单字段，原值不进入以上任何一层），并按 10% 抽查四层实际记录。
- **驳回行为**：驳回 100% 失败结束并留审计，0 例自动改稿重投。
- **结果可见**：分发、驳回、零结果、取数失败四类结果 100% 各有可见回执与审计时间戳，不出现静默结束；从结账完成到分发管理层的中位数 < 1 个工作日。

### 复用与变体
- **同构迁移**：季度经营摘要、董事会财务简报、投资人月度更新草拟。
- **加签变体**：含预测性表述的段落加签 CFO，在提示词里写明即可。
- **多级分发**：确认后按管理层、董事会两条频道分发不同详略版本，在提示词里写明。

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