本章进度 12 / 18
67%
Harness 与工作流·练习·18 分钟
正文已完成

写一份不会过期失控的批准契约

定义审批对象、版本、范围、期限、批准人和撤销方式。

L143
为什么现在学

现在把“人工检查点”用于一次具体操作,检查你能否独立做出并修正结果。

本课会用什么
  • 按本课练习说明准备真实材料
  • 保留练习与复盘记录

一句“用户同意了”无法支撑安全执行。批准必须是结构化事实,并能回答同意谁、做什么、对哪个版本、在什么时候之前有效。

这一课的结果

能交付一个可由系统验证、不可跨对象复用的批准契约。

核心概念

先把关键判断说清楚

01

对象与版本绑定

approval_id 关联资源 ID 和内容哈希,避免批准 A 却执行 B。

02

范围与期限最小化

只授权一次动作或一批明确对象,并设置 expires_at。

03

撤销与消费状态

批准可以撤销;一次性批准执行后标 consumed,不能再次使用。

案例拆解

旧批准被拿来发送新名单

一周前批准向 20 人发送通知,名单后来变成 35 人,系统仍沿用 approval_id。

  1. 01

    批准绑定 recipient_set_hash 和 body_hash。

  2. 02

    名单或正文变化立即使批准 invalidated。

  3. 03

    发送后标 consumed,并记录 message_batch_id。

案例结果

旧批准既不能覆盖新增收件人,也不能被第二次重复消费。

提交前练习

现在轮到你

为一个高风险动作写批准契约字段。

完成本课需要:完成以下内容用于本课收口。

内容会自动保存在当前设备
查看参考答案与评分标准

参考答案

approval,actor_id、action=publish、article_id、content_hash、channel、expires_at、status=active|revoked|consumed;成功后写 post_id 和 consumed_at。

评分标准

  • 对象和版本不可混淆
  • 权限范围最小且有期限
  • 撤销与消费状态明确

本课收口 · 学习证据

留下完整学习证据

读完内容、完成练习、通过理解检查并留下 12 字以上总结,才记为已验证。

0 / 4
02完成本课必填练习0 / 4 项必填内容已填写03通过理解检查点此去回答,约 30 秒
04写下 12 字以上总结还差 12 字
正文修改后,原 approval_id 应怎样处理?
你现在更接近哪一种状态?
尚有必填项未完成,请补齐后再继续。

资料来源

继续核对与延伸阅读

本课内容最近更新于 。