## 技术文档审查到期提醒 {.case data-case-id="014"}

| 字段 | 值 |
| --- | --- |
| 案例编号 | `014` |
| 行业 / 部门 | 互联网 / 研发 |
| 角色 | 技术负责人 |
| 难度 | `入门` |
| 调用来源 | `schedule`（定时由获授权 Agent 经 App/Extension 查询文档审查系统） |

<!-- slot: 目标 -->
技术文档写完就没人管，代码改了文档却没更新，新人看到的尽是过期信息。目标：定时让获授权 Agent 经 App/Extension 查询文档审查系统，按有文档到期、本期无到期、缺失审查日期·待确认、查询失败四类结果分别给出可见回执，有到期时通知对应负责人（按令牌回填）确认"这篇还准不准"。指标：超过 90 天未审查的文档在一个月内被复核的比例从 10% 提升到 70%；新人反馈"文档不准"的投诉下降 ≥ 50%。

<!-- slot: 边界 -->
- **覆盖**：定时查询文档审查系统，按有到期、无到期、缺失审查日期·待确认、查询失败四类结果出回执，有到期时通知负责人（按令牌回填）并留审计时间戳。
- **不覆盖**：自动改写或删除文档内容、自动归档、对每篇文档做内容正确性的深度判断。
- **假设**：有一个经授权能查询文档审查系统的 Agent（通过 App/Extension）；系统里记录每篇文档的标题、负责人受控令牌与最后审查日期，缺失日期的文档会被如实标为"缺失数据"。

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

```text
帮我创建一个 Workflow：定时由获授权的查询 Agent 经 App/Extension 查询文档审查系统，核对哪些文档距上次审查已超过 90 天。App/Extension 在读取侧即完成聚合，Agent 只接收文档标题、最后审查日期与负责人内部标识（受控令牌：权限受控且 Agent 无法反查原值）等白名单字段，不带出联系方式等个人字段。
触发：定时（计划）发起调用，调用时带入团队频道、查询 Agent 和查询窗口（默认 90 天）。
结果分四类处理（缺失审查日期的文档单列，不混入"无到期"）：
  有文档到期：通知对应负责人，说明文档标题、最后审查日期与"请确认是否仍然准确"，并留审计时间戳。
  本期无到期：所有文档都有有效审查日期且都在查询窗口内，发一条"本期无到期文档"汇总回执并留时间戳，不要静默结束——此回执只含真正在窗口内的文档，不含缺审查日期的。
  缺失审查日期·待确认：审查日期缺失的文档无法判定是否到期（既不是"无到期"也不是"已到期"），单独发一条"缺失审查日期·待确认"清单并留时间戳，由人工补全日期后下一轮再判定。
  查询失败（系统不可达或审查日期数据陈旧）：告警失败、留审计时间戳，按重试上限重试，仍失败则升级到值班频道。
审批：不涉及审批，提醒是低风险通知，直接触达。
异常：查询 Agent 回传不合结构就停在等待点等它重新提交，不自动重跑；通知发送失败按重试上限重试，仍失败则升级到值班频道并保留待发内容供人工补发；缺失审查日期的文档不要猜成"未到期"或"已到期"，一律单列为"缺失审查日期·待确认"，不并入"本期无到期"。
完成：四类结果各自出回执后结束。
```

<!-- slot: 流程 -->
![案例 014 文档审查到期提醒：定时触发让获授权 Agent 查询文档审查系统；查询失败留审计并重试升级，本期无到期发汇总回执，缺失审查日期单独发待确认清单，有文档到期则通知负责人并留审计时间戳](../../../media/cases/fig-case-014-01-flow.svg){#fig-case-014-01 width=94%}

如上图所示，正常路径与异常同时可见，四类结果都有可见回执：

1. **定时触发**：计划到点发起一次调用，带入团队频道、查询 Agent 与查询窗口（默认 90 天）。
2. **查询文档审查系统**：获授权 Agent 经 App/Extension 读取每篇文档的最后审查日期并回传；回传结构不合要求时停在原等待点，等其修正后重新提交，不自动重跑。
3. **四类结果分流（缺失审查日期单列）**：
   - **查询失败**：系统不可达或审查日期数据陈旧，告警失败并留审计时间戳，按重试上限重试，仍失败则升级到值班频道。
   - **本期无到期**：所有文档都有有效审查日期且都在审查窗口内，发一条汇总回执并留时间戳，不静默结束（不含缺审查日期的文档）。
   - **缺失审查日期·待确认**：审查日期缺失、无法判定是否到期的文档，单独发一条"缺失审查日期·待确认"清单并留时间戳，由人工补全日期后下一轮再判定，既不并入"无到期"也不算"已到期"。
   - **有文档到期**：对每个到期文档的负责人发通知，附标题、最后审查日期与"请确认是否仍然准确"，并留审计时间戳。

<!-- slot: 配置 -->
你不需要手写代码或配置。把上面的提示词发给 Loop，AI 会理解意图、在后台画出这个"定时查询 + 四路分流"流程——它知道"查文档审查系统"需要一个发消息并等待回调的 Agent 环节、"分四类结果"需要一个条件路由、"通知与回执"各需要一个发消息环节。AI 还会在后台校验流程结构是否完整（每个环节的输入是否都连好），你不必关心这些技术细节。

<!-- slot: 异常 -->
- **查询失败或数据陈旧**：不落入"本期无到期"或静默结束，而是告警失败、留审计时间戳，按重试上限重试；仍失败则升级到值班频道由人工确认。
- **通知发送失败**：按重试上限重试投递；超过上限则升级，并保留待发内容供人工补发。
- **本期无到期**：所有文档都有有效审查日期且都在窗口内时，仍发一条汇总回执并留时间戳，让"没消息"变成可核验的记录，而不是无声结束——此回执不含缺审查日期的文档。
- **缺失审查日期·待确认（不猜不混）**：审查日期缺失的文档无法判定是否到期，单独成"缺失审查日期·待确认"清单，既不并入"本期无到期"、也不算"已到期"，由人工补全日期后下一轮再判定。
- **负责人已离职或字段为空**：通知会发到无效账号或无法定位收件人。Agent 不猜负责人，把这类文档归入"缺失数据·待确认"清单，由人工补全后下一轮再处理。
- **查询 Agent 回传不合结构**：本次完成请求被拒绝，停在等待点等其修正后重新提交，不自动重跑。

<!-- slot: 审批 -->
本案例不涉及审批。审查提醒是低风险、可撤回的通知，应第一时间触达负责人；因此不设 `request_approval` 环节，四类结果直接出回执。

<!-- slot: 外部系统 -->
本工作流的文档审查状态由获授权 Agent 通过 App/Extension 从文档审查系统读取，工作流本身不直接调用外部系统。系统的访问凭据用 `<token>` 占位，由 Agent 运行时从密钥引用。进入 Agent 消息、Run/Activation/Effect 记录与 App/Extension 工具日志的字段以白名单为准（仅令牌化/白名单字段，原值不进入以上任何一层），可回溯个人的字段（姓名/邮箱/证件/联系方式等）在源头即被令牌化/伪名化，并按 10% 抽查四层实际记录。系统不可达或某篇文档审查日期数据陈旧、缺失，属于查询失败或缺失数据，走上面的失败回执与"待确认"标记——不当作"本期无到期"，更不当作"全部在审"。

<!-- slot: 验收 -->
- **回放集与基准**：取最近 50 篇文档（含已知到期、未到期、缺审查日期三类）回放，人工基准答案为既定到期清单；到期判定一致率 ≥ 90%，缺失审查日期的文档 100% 归入"缺失审查日期·待确认"清单，不误判为"未到期"或"已到期"（误判比例 0）。
- **分母与口径**：一致率分母为回放总数；每轮查询记录查询与通知时间戳，连续运行 3 个月。
- **结果可见**：有到期、无到期、缺失审查日期·待确认、查询失败四类结果 100% 各有可见回执，不出现静默成功；按 10% 抽样核对通知内容与原文一致。
- **时效**：从本次查询启动到回执或通知发出的中位数 < 10 分钟；超 90 天未审查文档在一个月内被复核的比例提升到 ≥ 70%；新人"文档不准"投诉下降 ≥ 50%。
- **源头脱敏**：进入 Agent 消息、Run/Activation/Effect 记录与 App/Extension 工具日志的字段 100% 在白名单内（仅令牌化/白名单字段，原值不进入以上任何一层），并按 10% 抽查四层实际记录。

### 复用与变体
- **同构迁移**：合同到期提醒、证书续期提醒、流程规范年度审查。
- **按紧急度路由**：超期超过 180 天的文档单独通知负责人并抄送其主管，普通到期汇总成一条周报发到开发群。

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