流程显示失败,客户却已经收到通知

一个售后 Agent 需要先读取订单、创建工单、发送确认邮件,再给客服群推送提醒。某天工单接口超时,系统把整个任务标成失败并自动重试。第一次执行其实已经发出邮件,第二次又发一封;工单仍未创建,客户却收到两次“我们已受理”的承诺。

跨系统自动化很难像数据库操作那样整体回滚。邮件发出去无法真正收回,外部平台的记录也可能已经被其他人使用。真正需要设计的不是一个笼统的成功或失败,而是每一步做到了哪里、哪些动作还能重试、哪些必须补偿。

先画出不可逆动作,再决定执行顺序

流程设计时,把读取、内部写入、外部通知、付款、发货等步骤分别标记。能安全撤销或重复的动作可以靠前,难以撤销的动作尽量放在必要条件全部满足之后。例如先创建工单并取得编号,再发送包含编号的客户通知。

有些业务无法等到所有步骤完成才通知,就要在文案中使用准确状态,比如“已收到申请,正在创建工单”,而不是提前承诺“工单已经建立”。流程语言也属于技术控制的一部分,能减少半成功时的业务误解。

  • 标记每一步是否可重试、可撤销和有外部副作用。
  • 不可逆动作尽量放在关键写入成功之后。
  • 通知文案与流程真实状态保持一致。

补偿不等于假装从未发生,而是把业务恢复到可接受状态

邮件无法收回时,补偿动作可能是发送更正通知;库存已经预占但订单失败,可以释放库存;客户标签改错,可以根据原值恢复。每个高影响动作都要预先定义对应补偿、执行条件和负责人。

补偿本身也可能失败,所以要有状态记录和人工队列。系统不能无限自动尝试,更不能在不知道当前状态时重复执行。超过次数或时间阈值后,把完整上下文交给值班人员处理。

流程状态要比“成功、失败”更细

实用状态可以包括待执行、执行中、部分完成、等待重试、等待补偿、人工处理中和已关闭。每一步保存外部系统返回的业务编号、时间和结果,重试前先确认动作是否其实已经成功,只是响应丢失。

这也要求接口支持幂等标识。同一个业务任务无论重试多少次,都能识别为同一请求,不重复创建工单或扣减库存。状态机、幂等和补偿是一起工作的,缺少其中任何一项,异常处理都会变成猜测。

上线前专门测试中间失败,不要只测顺利走通

测试时人为让第二步、第三步和最后一步分别超时或返回错误,观察系统是否重复动作、状态是否清楚、补偿是否生效、人工能否接手。还要测试外部系统实际成功但响应超时这种最容易误判的情况。

企业 AI 自动化的可靠性,不是看正常流程跑得多漂亮,而是事情做到一半时能不能有序收场。把部分失败当成必然会发生的运行状态,团队才不会在真实客户面前第一次学习怎么补救。

本文根据一路凯歌在企业工作流、系统集成和异常处理设计中的实践整理,重点讨论多个动作只完成一部分时如何收场。

要点总结

  • 不是。补偿通常是新的业务动作,用来抵消或修正已经发生的影响,不一定能恢复到完全未发生。
  • 不够。还要确认动作是否幂等、外部是否已成功,并为不可逆步骤准备补偿和人工处理。
  • 外发通知、付款、库存、订单、客户资料修改等会产生外部影响或难以撤销的动作。

参考来源说明

本文围绕“邮件发出去了,工单却没建成功:企业 AI 流程要为“半成功”准备补偿动作”展开,结合 5 份公开资料及一路凯歌在“企业 AI 服务”方向的执行经验整理,重点看它对官网可引用结构、FAQ 设计和后续获客复盘的影响。

上一篇:AI 准备一次改 500 条客户记录,先别点确认:批量动作要有预演模式 下一篇:一句 AI 回答出了问题,团队却查不到它用了哪份资料:每次请求都要有完整链路