你让助手起草一封延期说明,准备自己看过再发。它却连同附件直接寄给客户,附件还是昨天的版本。起草、修改和对外承诺连在一个工具里,模型判断“写好了”,就跨过了你原本打算亲自做的决定。
最简单的办法是只让它生成草稿,由你在邮件客户端发送。如果现有审批系统已经能控制发送,就继续使用。需要接入自动发送的理由,应是审批后还有大量重复操作,而不是为了省一次点击,取消这次确认。
可以把准备草稿与发送拆成两个函数。前者返回正文、收件人和附件供你预览;后者只负责提交已经批准的那份内容。EasyRemote 能提供分开的调用入口,但“这份内容已批准”的证明仍需由审批服务保存和检查,不能采用助手自己传来的 approved=true。
批准时要绑定具体版本。确认了正文,却允许之后更换收件人或附件,等于没有确认最终发送物。开发时应让批准记录关联这些内容,一旦修改就重新请你看,并限制批准有效期。发送凭证留在提供方,不因为助手能起草就一起交给它。
还要处理没有收到返回的情况。邮件服务可能已经发出,只是网络超时;再次调用不能默认再寄一封。发送程序应使用渠道支持的去重或状态查询,无法确认时保留“发送结果待核实”,由人到渠道端检查,而不是继续自动重试。
用测试收件人演练未批准、批准后改附件、发送超时三种情况。通过之后,你能保留助手整理内容的效率,也清楚哪一刻真正作出了外部承诺。邮件已经送达的事实不能靠撤销本地批准收回,所以这条界线必须在发送之前守住。
- 01
生成草稿
正文、收件人、附件一起预览。
- 02
确认具体版本
任何修改都需要重新确认。
- 03
发送并核对状态
超时先核实,不盲目重发。
识别批准之后的内容变化
本地指纹示例,不是批准证明;批准身份、记录及发送幂等仍由服务检查。
本地示例 · python
import hashlib, json
def fingerprint(message):
raw = json.dumps(message, sort_keys=True).encode()
return hashlib.sha256(raw).hexdigest()
message = {'to': ['test@example.invalid'], 'body': 'Draft',
'attachments': ['report-v1.pdf']}
approved_content = fingerprint(message)
message['attachments'] = ['report-v2.pdf']
print('review again' if fingerprint(message) != approved_content else 'unchanged')预期结果:输出review again;附件变化不能沿用旧内容批准。
接入时的检查项
- 未批准草稿无法触发外发操作。
- 修改正文或收件人后旧批准不再有效。
- 重试不会产生重复消息。