两次操作都成功,结果仍可能错

设想 AI 在上午读取了一条客户记录,准备整理联系偏好。它还在生成建议时,员工接到电话,把偏好改成“不再接收某类通知”。稍后 AI 把基于旧资料生成的整条记录写回,新修改就被覆盖了。系统日志可能显示两个请求都成功,业务上却丢掉了刚确认的信息。这里是演示情境,不是实测事故。

这种问题与重复执行不同:不是同一个动作做了两遍,而是不同操作者在不同时间修改同一对象。即使每次请求都有唯一编号,仍可能互相覆盖。企业 AI 的生成过程往往比普通表单保存更长,因此读取与写入之间的变化不能忽略。需要保护的是这段时间里已经发生的业务更新。

读取时把依据版本一起带回来

系统返回记录时,应有可用于比较的版本标识,例如受接口支持的版本号或实体标签。AI 生成的修改建议绑定这个版本,审核界面显示它基于哪次资料形成。不能只记录一个“读取成功”,也不能假定读取后的记录在整个审批期间保持不变。版本标识的生成方式和更新范围应由系统实现明确约定。

更新时间有时可以帮助提示,但若精度、更新策略或多个写入入口不一致,它未必足以承担冲突判断。不要只因为数据库有一个时间字段就当成可靠版本号。对接现有系统时,先核验是否支持条件更新;如果不支持,需设计受控写入入口或采用人工确认等替代方案,并在交付中明确保护范围。

检查和写入必须是一个受保护的动作

“先查一次是否变了,再发更新请求”仍有间隙:查完以后、写入之前,其他人还可能修改。可靠的条件更新应由服务端在受保护的操作中核对预期版本,再决定是否写入。若发现版本已变化,返回冲突而不是静默覆盖。只在提示词里要求 AI 小心,不会改变接口对并发请求的处理方式。

PostgreSQL 官方文档说明,不同事务隔离级别对并发变化的可见性和冲突处理存在差异,某些失败需要重试事务。这是数据库机制,不等于自动解决业务上的选择。不能让数据库事务一直等着人工审批,更不能把业务冲突一律当网络故障重试。长时间生成和审核阶段通常需要在最终提交时重新核对依据。

冲突以后先展示差异

给员工看三份信息:AI 当时读到的值、现在系统里的值、建议写入的值。不要只弹出“保存失败”,也不要要求员工从日志里自己拼差异。若冲突字段涉及联系限制、权限或任务状态,应停止自动覆盖,交给有权判断的人。其他字段是否能合并,也应有事先定义的规则,而不是由模型临场决定。

有时同一记录的两个字段互不影响,可以分别更新,但这需要业务确认它们确实独立。例如地址和服务区域可能有关联,不能只因为字段名不同就认为无冲突。对允许自动合并的情况,记录采用了什么规则以及保留了哪些修改。对不允许合并的情况,重新读取资料、生成建议并确认,而非把旧建议强行再提交一次。 还应留意系统以外的写入入口。只给 AI 接口加保护,而批量导入工具仍然整条覆盖,冲突问题并没有从业务上消失。盘点员工表单、定时同步和第三方集成分别怎样更新同一对象,尽量统一受保护的写入规则。暂时无法统一的入口,要说明其风险与使用限制,不能在验收报告里笼统写成全系统已具备冲突保护。

对于只追加备注的动作,处理方式可能与替换核心字段不同,但也要确认备注是否真的互不覆盖,以及排序和归属如何保存。设计时按动作区分,比为整套系统选择一个口号式方案更有用。验收人员应能说出哪些操作允许并行、哪些会返回冲突、哪些必须重审,并实际跑过对应路径。没有覆盖的外部接口则列为边界,而不是凭经验推定同样可靠。

审批通过不应永久有效

审批人确认的是当时显示的内容及其依据。审批之后资料又变了,原确认未必还能用于新状态。可以把审批绑定到具体版本和变更集合,在执行前核验是否仍匹配。若关键条件改变,要求重新确认;非关键变化如何处理,则需要事先约定,避免所有小变动都触发重复审批,也避免所有变化都被忽略。

回执应告诉员工最终是已写入、因冲突未写入,还是等待重新确认。旧任务的失败不等于客户资料没有更新,系统应显示最新状态的入口,让员工知道同事的修改已经生效。记录冲突原因时只保存必要字段与审计信息,不必把整份客户资料复制到每条运行日志中。

验收要故意让操作交错

测试时安排 AI 先读,人工后改,再让 AI 提交;再反过来让人工保存旧表单,看是否同样受到保护。还要测试删除后的记录、权限变化后的写入、审批后更新,以及两个自动流程同时操作的情况。每个用例都应验证最终数据,而不只是检查接口返回码。只有看到旧值没有覆盖新事实,才算这一项保护成立。

最终交付清单应包含版本来源、条件更新规则、冲突提示、合并边界和重审机制。若某个外部系统暂时不支持可靠检查,就限制自动写入范围,并明确这不是已经解决的能力。企业 AI 接入业务系统的价值,在于帮助员工处理工作;保护同事已经完成的修改,是这份价值能否成立的基础。

本文为系统交付方法建议,场景为假设。PostgreSQL 官方资料仅支撑事务隔离与并发更新的机制说明,具体接口仍以项目实际实现和测试为准。

要点总结

  • 幂等主要处理同一动作重复提交;不同操作者基于旧版本写入,还需要版本检查和冲突处理。
  • 不一定。检查和写入之间仍可能变化,应由服务端提供原子的条件更新或其他可靠并发保护。
  • 技术重试与业务重审要区分。依据已变化时,应重新读取并按规则确认,不能盲目重放旧更新。

参考来源说明

本文为业务方法讨论,文中场景为说明用例。下列官方技术资料用于核对相应机制,站内服务页用于了解相关业务;不作为客户案例或效果数据的证明。

上一篇:客户没填数量,AI 却写成零:空值、零值和未确认必须分开处理 下一篇:AI 任务排队两小时,执行时已经没用了:队列要有优先级、有效期和过期出口