Approval Workflow
Approval Workflow 是管理高风险操作审批流程的机制,包括审批请求发起、审批人通知、审批决策和审批后执行。
#concept
#evergreen
#ai
#architecture
[!info] related notes
Approval Workflow
一句话定义
Approval Workflow 管理需要新增授权的操作,从可审阅请求、审批决策到受约束的执行。已在用户授权和策略范围内的操作无需重复审批;审批不是提高被硬性禁止操作权限的通道。
核心原理
审批流程
Agent 请求执行高风险操作
│
▼
创建审批请求
│
├─→ 通知审批人(Webhook、邮件、即时通讯)
│
▼
等待审批
│
├─ 批准 → 执行操作
├─ 拒绝 → 通知 Agent 操作被拒绝
└─ 超时 → 标记 expired,不产生授权
服务端协议(伪代码)
根据当前授权和策略判断:已获授权且在范围内则继续;禁止则拒绝;仅需审批时创建请求
创建持久审批请求:request_id、actor、tenant、规范化操作、目标版本、expires_at
通知失败可重试,不能因此丢掉已持久化的请求
接收决策时验证审批人身份、权限、请求版本与服务端截止时间
原子转换 pending → approved / rejected / expired,记录决策来源
把授权消费与稳定 operation_id 的持久执行任务在同一事务中写入(或使用事务 outbox)
执行时重新验证资源版本和权限;恢复同一任务不能创建第二次操作,记录执行结果
常见坑
- 不做超时: 审批人不响应,Agent 永远等待
- 审批信息不足: 审批人看不到完整操作内容
- 不做审批记录: 无法审计谁批准了什么
- 只让协程超时:wait_for 超时不自动把数据库请求标记过期,晚到的批准可能仍被接受
- 批准对象漂移:参数、目标版本或收件人变化后,旧批准不能复用
- 批准后盲目重试:批准不等于执行完成;用 工具幂等性 处理崩溃、重试和未知结果