## 必修培训完成率提醒 {.case data-case-id="038"}

| 字段 | 值 |
| --- | --- |
| 案例编号 | `038` |
| 行业 / 部门 | 制造 / 人力 |
| 角色 | 培训负责人 |
| 难度 | `入门` |
| 调用来源 | `schedule`（定时由获授权 Agent 经 App/Extension 读取培训平台必修课完成记录） |

<!-- slot: 目标 -->
安全与合规必修课过了截止日才发现整条产线有十几个人没完成，是培训负责人最被动的时刻。目标：定时让获授权 Agent 读取培训平台的必修课完成记录，汇总到部门级完成率；截止前 7 天把"未完成且临近截止"的名单通知本人与直属经理，其余情况只发完成率回执。数据脱敏：完成率数据只到部门级，除"未完成且临近截止"外不点名任何个人。指标：临近截止未完成名单与培训平台记录一致率 ≥ 99%；部门完成率与平台汇总一致率 100%；取数失败 100% 出回执不静默。

<!-- slot: 边界 -->
- **覆盖**：定时读取必修课完成记录、汇总部门级完成率、截止前 7 天通知未完成者本人与直属经理、全员完成发回执。
- **不覆盖**：自动代学或代打卡、自动延长截止日、自动生成学习计划、按个人维度输出全量完成明细。
- **假设**：有一个经授权能读取培训平台必修课完成记录的 Agent（通过 App/Extension）；必修课清单、截止日与部门归属以平台记录为准，缺失标"待确认"。

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

```text
帮我创建一个 Workflow：每日定时（含节假日，保证长假不漏扫）由获授权的查询 Agent 经 App/Extension 读取培训平台全部必修课的完成记录，App/Extension 在读取侧即完成聚合与脱敏，Agent 只接收课程名、截止日、部门完成率、临近截止未完成名单（未完成人员标识为受控令牌：权限受控且 Agent 无法反查原值；展示名仅由下游授权 App 发送时回填）等白名单字段，不接收证件号、联系方式、历史学习成绩等原始字段，按部门汇总完成率。数据脱敏：完成率数据只到部门级，除"未完成且距截止不足 7 天"外，任何回执不点名个人。
触发：定时（计划）发起调用，调用时带入团队频道与查询 Agent。
结果分四类处理：
  有待完成（存在未完成人员且距截止不足 7 天）：通知其本人与直属经理（收件人由培训 App 按受控令牌解析回填），只含课程名、截止日与"未完成"状态；其余部门只出现在部门级完成率回执中，不点名。
  有人未完成但距截止仍 ≥7 天：仅输出部门级完成率回执，不点名，不静默。
  全员完成（本期无待完成人员）：发一条全员完成汇总回执（含各部门完成率，均 100%）并留时间戳，不静默结束，也不当作取数失败。
  取数失败（培训平台不可达或完成记录陈旧）：告警失败、留审计时间戳，按重试上限重试，仍失败则升级到值班频道。
审批：不涉及审批，临近截止提醒是低风险信息，直接触达本人与经理。
异常：查询 Agent 回传不合结构就停在等待点等它重新提交，不自动重跑；通知发送失败按重试上限重试，仍失败则升级到值班频道并保留待发内容供人工补发。
完成：四类结果各自出回执后结束，全部留审计时间戳。
```

<!-- slot: 流程 -->
![案例 038 必修培训完成率提醒：定时让获授权 Agent 读取培训平台必修课完成记录并按部门汇总完成率；有待完成且距截止不足 7 天通知本人与直属经理，有人未完成但距截止仍 ≥7 天仅发部门级完成率回执不点名，全员完成发完成率回执，平台不可达按取数失败告警留审计重试升级，完成率数据只到部门级不点名，均留审计时间戳](../../../media/cases/fig-case-038-01-flow.svg){#fig-case-038-01 width=92%}

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

1. **定时触发**：计划到点（每日，含节假日）发起一次调用，带入团队频道与查询 Agent。
2. **汇总完成率**：获授权 Agent 经 App/Extension 读取培训平台全部必修课完成记录并回传，按部门汇总完成率；回传结构不合要求时停在原等待点，等其重新提交，不自动重跑。
3. **四种结果分流**：
   - **有待完成**：存在距截止不足 7 天的未完成人员，通知其本人与直属经理，只含课程名、截止日与"未完成"状态；其余部门只出现在部门级完成率回执中，不点名。
   - **有人未完成但距截止仍 ≥7 天**：仅输出部门级完成率回执，不点名，不静默。
   - **全员完成**：发一条全员完成回执（含各部门完成率）并留时间戳，不静默结束。
   - **取数失败**：培训平台不可达或完成记录陈旧，告警失败并留审计时间戳，按重试上限重试，仍失败则升级到值班频道。

<!-- slot: 配置 -->
你不需要手写代码或配置。把上面的提示词发给 Loop，AI 会理解意图、在后台画出这个"定时查询 + 四路分流"流程——它知道"查完成记录"需要一个发消息并等待回调的 Agent 环节、"按完成状态与截止远近分流"需要一个条件路由、"通知与回执"各需要一个发消息环节。AI 还会在后台校验流程结构是否完整，你不必关心这些技术细节。

<!-- slot: 异常 -->
- **培训平台不可达或数据陈旧**：不当作"全员完成"或静默结束，而是告警失败、留审计时间戳，按重试上限重试；仍失败则升级到值班频道由人工确认。
- **临近截止通知发送失败**：按重试上限重试投递；超过上限则升级到值班频道，并保留待发内容供人工补发。
- **全员完成（结果无待完成项）**：仍发一条完成率回执并留时间戳，让"没消息"变成可核验的记录，而不是无声结束。
- **查询 Agent 回传不合结构**：本次完成请求被拒绝，停在等待点等其修正后重新提交，不自动重跑。
- **部门归属缺失**：个别人员没有部门记录时，该部门完成率分母不纳入该人员，也不猜部门，在回执中说明口径，必要时标"待确认"。
- **脱敏边界**：通知与回执默认只到部门级；只有"未完成且距截止不足 7 天"才点名的规则写死在流程里，不因某次结果特殊而放宽。

<!-- slot: 审批 -->
本案例不涉及审批。临近截止的必修课提醒是低风险、强时效的信息，应第一时间触达本人与经理；因此不设审批环节，四种结果直接出回执。

<!-- slot: 外部系统 -->
本工作流对培训平台完成记录的读取由获授权 Agent 通过 App/Extension 完成，工作流本身不直接调用外部系统。团队频道作为调用输入提供；培训平台的访问凭据用 `<token>` 占位，由 Agent 运行时从密钥引用。平台不可达或完成记录陈旧属于取数失败，走失败回执与升级，不当作"全员完成"。数据脱敏遵循最小披露：完成率只到部门级，点名仅限"未完成且临近截止"。进入 Agent 消息、Run/Activation/Effect 记录与 App/Extension 工具日志的字段以白名单为准（仅令牌化/白名单字段，原值不进入以上任何一层），敏感原始字段在源头即被聚合/区间化/令牌化，并按 10% 抽查四层实际记录。

<!-- slot: 验收 -->
- **回放集与基准**：取最近 3 门已结课必修课的完成记录（含临近截止才完成、始终未完成样本），人工基准答案为按截止日整理的应提醒清单与部门完成率；每日（含节假日）全量回放并记录扫描、通知时间戳。
- **分母与口径**：一致率分母为回放的课程 × 应修人员数；部门归属缺失的人员单独计数，不并入完成率统计。
- **指标**：临近截止未完成名单与人工复核一致率 ≥ 99%；部门完成率与平台汇总一致率 100%；取数失败 100% 出回执不静默。
- **脱敏抽查**：每周抽查 5 条通知与回执，除"未完成且距截止不足 7 天"外 100% 无个人姓名，完成率均到部门级。
- **源头脱敏**：进入 Agent 消息、Run/Activation/Effect 记录与 App/Extension 工具日志的字段 100% 在白名单内（仅令牌化/白名单字段，原值不进入以上任何一层），并按 10% 抽查四层实际记录。

### 复用与变体
- **同构迁移**：合规声明签署提醒、安全操作证复审提醒、信息安全年度考试提醒。
- **分级提醒**：截止前 7 天通知本人、前 3 天抄送经理、到期日升级到部门负责人，在提示词里写明分级节奏。
- **写回平台**：提醒发出后再加一个 Agent 环节，由它通过 App/Extension 把"已提醒"状态写回培训平台台账；写回须是获授权 Agent 经 App/Extension 的幂等动作（幂等键=课程代号+部门+提醒批次），响应未知先查后写、按重试上限有限重试、失败升级值班并置"待处理"保留补偿，全程留审计。若不需要写侧能力，改为只读汇总或仅留 Loop 回执更安全。

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