## 年度规划各部门输入汇总 {.case data-case-id="079"}

| 字段 | 值 |
| --- | --- |
| 案例编号 | `079` |
| 行业 / 部门 | SaaS / 管理 |
| 角色 | 战略负责人 |
| 难度 | `进阶` |
| 调用来源 | `manual`（规划启动后由战略负责人发起一次手动调用，带入输入模板与部门清单） |

<!-- slot: 目标 -->
年度规划一到收口期，战略负责人天天在群里追各部门的输入，收齐了还要一周手工拼汇总。目标：规划启动后由战略负责人发起一次手动调用，逐部门跟踪规划输入提交情况：全部提交的基于调用输入的各部门输入材料（脱敏汇总）生成汇总草稿交战略负责人人工审阅；有未提交的催办部门接口人；清单或模板不完整的告警后新开调用。汇总草稿逐部门标注提交状态与字数完整性，摘要由 Agent 生成但明确标注"未经人工审阅"；经营假设数字脱敏为区间。规划内容由人做最终判断，工作流只汇总。指标：全部提交后 2 小时内产出汇总草稿；标注与区间脱敏覆盖率 100%；接口人仅用清单字段。

<!-- slot: 边界 -->
- **覆盖**：手动调用逐部门跟踪规划输入提交、三路分流（全部提交、有未提交、清单或模板不完整）、基于调用输入材料的汇总草稿生成与人工审阅、催办通知、脱敏与标注。
- **不覆盖**：代替战略负责人评审部门规划质量、自动改写部门输入内容、自动定规划目标与数字。
- **假设**：有一个经授权能读取各部门规划输入提交状态的 Agent（通过 App/Extension）；输入模板与部门清单在调用时提供，含部门名、接口人（受控令牌：权限受控且 Agent 无法反查原值；展示名仅由下游授权 App 发送时回填）、模板字段要求；各部门输入材料（脱敏汇总，经营数字已区间化）也作为调用输入提供，汇总与摘要只基于该输入生成；接口人仅用清单字段，缺失标"待确认"。

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

```text
帮我创建一个 Workflow：年度规划启动后由战略负责人发起一次手动调用，让获授权的汇总 Agent 经 App/Extension 读取各部门按输入模板提交规划输入的情况，App/Extension 在源头只放行白名单字段——部门代号、接口人内部标识（受控令牌：权限受控且 Agent 无法反查原值；展示名仅由下游授权 App 发送时回填）、是否已提交、各部门输入材料字数（word_count，逐部门计数）与模板字段完整度；经营假设数字在源头即脱敏为区间，汇总草稿与回执不外带原始数字。各部门输入材料（脱敏汇总，经营数字已区间化）作为调用输入提供，汇总与摘要只基于该输入生成，不从其他来源补内容。
汇总 Agent 回传 JSON：{plan_year: 规划年度, departments: [{dept_code: 部门代号, contact_ref: 接口人令牌|缺失, contact_missing: 布尔, submitted: 布尔, word_count: 非负整数|缺失, completeness: 枚举(完整|缺字段), template_fields_missing: [非空字段名]}], checklist_complete: 布尔, fields_missing: [枚举(规划输入平台|接口人|模板字段)], source_ok: 布尔, audit_ts: 时间戳}。状态矩阵：source_ok、checklist_complete、audit_ts 始终必填；source_ok=false 时 fields_missing 必为 [规划输入平台]，plan_year、departments 禁止出现且 checklist_complete 必为 false；source_ok=true 时 plan_year、departments 必填，逐元素 dept_code、contact_missing、submitted、completeness、template_fields_missing 必填，contact_missing=false 当且仅当 contact_ref 存在，contact_missing=true 当且仅当 contact_ref 缺失，submitted=true 当且仅当 word_count 存在，completeness=完整 当且仅当 template_fields_missing 为空。顶层 fields_missing 必精确汇总逐元素缺项：任一 contact_missing=true 才且必须含接口人，任一 template_fields_missing 非空才且必须含模板字段；checklist_complete=true 当且仅当 source_ok=true、每个元素 submitted=true、contact_missing=false、completeness=完整且顶层 fields_missing 为空。仅接受这些组合；其余 callback 一律拒绝，原 Effect 保持 awaiting。
触发：手动发起调用，调用时带入输入模板、部门清单、各部门输入材料（脱敏汇总）、战略频道、审批人、汇总 Agent 和值班频道（值班频道作为调用输入提供，用于失败升级）。
结果分三类处理：
  全部提交：基于调用输入的各部门输入材料（脱敏汇总）生成汇总草稿，逐部门标注提交状态与字数完整性，摘要由 Agent 生成但每段标注"未经人工审阅"，交战略负责人人工审阅，通过前不向部门分发；留审计时间戳。
  有未提交：对未提交部门逐个催办到接口人（仅用清单字段，缺失标"待确认"，不从通讯录猜人），附模板字段要求与提交入口，留审计时间戳；接口人标识取自调用输入。
  输入清单或模板不完整（清单缺接口人、模板缺字段要求）：告警留审计，通知战略负责人补全后新开一次调用，本次不重试、不猜缺失字段。
另设两类边界结果：
  本期无部门（查询成功但清单为空）：发一条"本期无部门"汇总回执并留时间戳，不静默结束。
  取数失败（规划输入平台不可达、数据陈旧）：告警失败、留审计时间戳，按重试上限重试，仍失败则升级到值班频道（作为调用输入提供）；不当作"本期无部门"，也不当作全部提交。
审批：汇总草稿必须经战略负责人人工审阅后才算定稿，审阅为二值确认或驳回，不设自动超时，无默认通过/否决；确认后向部门分发定稿，驳回则失败结束留审计、草稿不分发；规划内容由人做最终判断，工作流只汇总。
异常：汇总 Agent 回传不合结构就停在等待点等它重新提交，不自动重跑；通知发送失败按重试上限重试，仍失败则升级到值班频道并保留待发内容供人工补发。
完成：汇总草稿送审、催办通知、清单不完整告警、零结果回执、取数失败升级，各自留审计时间戳后结束。
```

<!-- slot: 流程 -->
![案例 079 年度规划各部门输入汇总：规划启动后手动调用获授权 Agent 逐部门跟踪规划输入提交；全部提交基于调用输入的各部门输入材料（脱敏汇总）生成汇总草稿（逐部门标注提交状态与字数完整性，摘要标注未经人工审阅）交战略负责人人工审阅通过后才分发，驳回则留审计不分发，有未提交催办部门接口人（仅用清单字段，缺失标待确认），清单或模板不完整告警留审计新开调用不重试，本期无部门发零结果回执，平台不可达按取数失败告警留审计重试升级；经营假设数字脱敏为区间；回传不合结构停在原等待点](../../../media/cases/fig-case-079-01-flow.svg){#fig-case-079-01 width=92%}

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

1. **手动触发**：规划启动后由战略负责人发起调用，带入输入模板、部门清单、各部门输入材料（脱敏汇总）、战略频道、审批人与汇总 Agent。
2. **跟踪提交**：获授权 Agent 经 App/Extension 在源头白名单化读取各部门规划输入提交情况，逐部门回传部门代号、接口人内部标识（受控令牌）、是否提交、各部门输入材料字数（word_count）与模板字段完整度；回传缺任一必填字段视为不合结构，停在原等待点，等其重新提交，不自动重跑。
3. **三路分流**：
   - **全部提交**：基于调用输入的各部门输入材料（脱敏汇总）生成汇总草稿，逐部门标注提交状态与字数完整性，摘要由 Agent 生成但每段标注"未经人工审阅"，交战略负责人审阅，通过前不向部门分发。
   - **有未提交**：对未提交部门逐个催办到接口人（仅用清单字段，缺失标"待确认"，不从通讯录猜人），附模板字段要求与提交入口，留审计时间戳。
   - **清单或模板不完整**：告警留审计，通知战略负责人补全后新开调用，本次不重试、不猜缺失字段。
4. **两类边界**：本期无部门发零结果回执留时间戳；平台不可达按取数失败告警留审计，按重试上限重试，仍失败升级值班频道。

<!-- slot: 配置 -->
你不需要手写代码或配置。把上面的提示词发给 Loop，AI 会理解意图、在后台画出这个"手动调用 + 草稿人工审阅 + 三路分流"流程——它知道"跟踪提交"需要一个发消息并等待回调的 Agent 环节、"按提交情况分流"需要一个条件路由、"人工审阅"需要一个审批环节、"草稿与催办"各需要一个发消息环节。AI 还会校验流程完整性，你不必关心这些细节。

<!-- slot: 异常 -->
- **规划输入平台不可达、数据陈旧**：不当作"本期无部门"或全部提交，而是告警失败、留审计时间戳，按重试上限重试；仍失败升级值班频道。
- **接口人缺失**：Agent 不从通讯录或历史记录猜人，标"待确认"，由战略负责人补全或指定。
- **清单或模板不完整**：不猜缺失的接口人或模板字段，告警留审计，通知战略负责人补全后新开一次调用，本次不重试。
- **负责人驳回草稿**：审阅失败结束并留审计，草稿不分发；改完后重新发起调用生成新草稿，没有"AI 自动定稿"。
- **催办通知发送失败**：按重试上限重试投递；超过上限则升级值班频道，并保留待发内容供人工补发。
- **本期无部门（结果为 0）**：仍发零结果回执并留时间戳，让"没消息"变成可核验记录。
- **汇总 Agent 回传不合结构**：本次完成请求被拒绝，停在等待点等其重新提交，不自动重跑。
- **长时间无人审阅**：审批不设自动超时，流程停在等待状态。若需响应时限，由另一条定时 Workflow 扫出超时项并通知战略负责人。

<!-- slot: 审批 -->
汇总草稿必须经战略负责人人工审阅后才算定稿，审阅为二值（确认或驳回，不设自动超时，无默认通过/否决）：确认后向部门分发定稿；驳回则失败结束留审计、草稿不分发，改完后重新发起调用生成新草稿——规划内容由人做最终判断，工作流只汇总。审阅时能看到逐部门的提交状态、字数完整性与标注"未经人工审阅"的摘要（摘要只基于调用输入的脱敏汇总材料生成，假设数字已区间化），是"有依据的快速决策"。若要更严（如定稿前须 CFO 会签），写明即可。

<!-- slot: 外部系统 -->
本工作流对各部门规划输入提交情况的读取由获授权 Agent 通过 App/Extension 完成，工作流本身不直接调用外部系统。进入 Agent 消息、Run/Activation/Effect 记录与 App/Extension 工具日志仅记录白名单/令牌化字段（原值不进入以上任何一层），可回溯个人或敏感资产的字段在源头即被令牌化/伪名化，并按 10% 抽查四层实际记录——App/Extension 在源头只放行部门代号、接口人内部标识（受控令牌）、是否已提交、逐部门输入材料字数与模板字段完整度（与提示词白名单完全一致），经营假设数字在源头区间化。各部门输入材料（脱敏汇总）与战略频道、审批人、值班频道均作为调用输入提供——汇总与摘要只基于该输入生成，可信分发目标来自调用输入；规划输入平台的访问凭据用 `<token>` 占位，由 Agent 运行时从密钥引用。平台不可达或陈旧属于取数失败，走失败回执与升级。

<!-- slot: 验收 -->
- **回放集与基准**：取上一年度 30 个部门输入（含全部提交、部分未提交、清单缺接口人、模板缺字段样本）回放，基准为既定提交状态与应催办清单。
- **分类准确**：全部提交与有未提交判定和基准一致率 ≥ 95%；全部提交后 2 小时内产出草稿。
- **字段纪律**：清单提供接口人时 100% 原样带出；缺失时 100% 标"待确认"，不出现猜测的接口人；清单或模板不完整时 100% 告警留审计、新开调用，0 次补猜。
- **脱敏与标注**：进入 Agent 消息、Run/Activation/Effect 记录与 App/Extension 工具日志的字段 100% 在白名单内（原值不进入以上任何一层），并按 10% 抽查四层实际记录；草稿与回执中原始假设数字出现 0 次，区间脱敏与"未经人工审阅"标注覆盖率 100%。
- **人工把关**：定稿分发的草稿 100% 经审阅通过，自动分发 0 例；驳回 100% 留审计不分发。
- **结果可见**：五类结果 100% 各有可见回执留审计，不静默成功。

### 复用与变体
- **同构迁移**：季度滚动规划汇总、年度预算申报汇总、战略专项立项材料汇总。
- **滚动催办**：改为定时调用，对仍未提交的部门每两日催办并抄送部门负责人。
- **写回平台**：审阅通过后加一个 Agent 环节，把"已收口"状态写回规划输入平台；写回须是获授权 Agent 经 App/Extension 的幂等动作（幂等键=部门代号+规划年度），响应未知先查后写、按重试上限有限重试、失败升级值班并置"待处理"保留补偿，全程留审计。

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