Idempotency
自动化跨线程防重复交付:让未知结果也消耗幂等键
一次自动文件交付把同一份内容发送到了同一目标两次。原请求产生了两个兄弟任务,也就是从同一父请求派生的两个独立执行。第一个任务可能已经完成外部动作,但界面证据无法确认最终文件名,因此结果被记录为未知。第二个任务稍后恢复,只看到自己的本地执行尚未发送,于是再次越过交付边界。
这次重复暴露了智能体与工作流系统中常见的一处缺口。每个执行者的局部状态都可能看起来安全,组合后的外部行为却会产生重复副作用。这里的副作用指改变外部系统状态的动作。修复需要围绕一次外部交付建立全局判断,并明确处理“可能成功、确认不完整”的结果。
这次结果属于可能成功
脱敏证据确认了四项事实:
- 两个任务指向同一个目标,内容字节也 …
完成态任务如何安全返修:用状态机绑定请求、草稿与审 …
自动化任务进入完成态时,通常已经留下多类事实:远端对象已经创建,内容已经回读,质量证据已经保存,租约也已经关闭。普通重试应当保持零写入。再次执行交付可能产生重复对象,也可能让旧证据继续描述已经变化的内容。
人工审稿会带来合理的例外。草稿在控制器看来已经完成,编辑仍可能要求调整结构、措辞或排版。若继续调用普通完成入口,控制器无法区分无害重放与获得授权的返修。
本次处理增加了一条独立的关闭写入返修状态机。它先把显式请求绑定到完成态来源,使过期证据失效,保留现有远端对象身份。只有修订内容完成更新和回读后,任务才能再次结束。
风险来自含义不清的完成态
脱敏案例包含两份仅保存为草稿的外部交付物。两稿都通 …
长任务执行前,先锁定版本化策略快照
长任务通常由多个进程分段完成:控制器先创建运行计划,后续工作器生成产物,进程中断后还可能由另一个实例恢复。若每个阶段都重新读取可变的全局策略,同一次运行就可能被几套规则先后解释。
一次策略升级暴露了这个风险。新版增加了更严格的选题、元数据和展示要求,设计目标是只影响新建计划。回归测试却发现,部分历史夹具开始读到尚未对它们生效的新字段。旧计划没有变化,计划外部的解释规则已经移动。
处理方法是在创建计划时选择一次策略,把规范化后的策略快照写入计划,后续生成、审核、完成和恢复都只读取这份快照。新策略可以继续演进,执行中的任务仍能保持同一套判断依据。
先确认判断边界是否移动
策略内容是否合理只是其中一 …
定时付费任务如何分配递增编号并避免重试重复创建
一个按周运行的媒体流水线需要支持同一 ISO 周内发布多期内容。原来的周标识不再唯一,因此任务目录和历史记录改成了 2026-W32-0、2026-W32-1、2026-W32-2 这样的版本化形式。
但增加序号只解决了一半问题。调度器可能在分配任务后、记录成功前异常重启。如果每次重跑都重新申请“下一个序号”,同一次逻辑运行就会消耗多个任务 ID。对于付费流水线,后果不只是目录混乱:后续命令还可能初始化第二个任务,并向供应商重复提交请求。
重试为什么会重复创建任务
这套流程必须同时满足两个看似冲突的要求:
- 同一周内的不同运行必须获得递增序号;
- 同一次定时运行的异常重试必须拿回原序号。
只看 …
构建生产级 WMS RF:仓库权限、幂等、离线草稿 …
把旧 WMS RF 迁移到新的移动技术栈,不能只把页面搬到手机尺寸。RF 是仓库执行入口,会直接改变库存、任务和设备状态,必须处理身份、仓库隔离、并发领取、弱网重试和真实硬件。
这次实现采用 Ionic Vue 与 Capacitor,PWA 和 Android 共用业务代码。后端继续使用现有 WMS 领域服务作为唯一状态机,移动接口只负责认证范围、任务编排、扫码校验、幂等和适合手持设备的响应。
仓库范围必须进入身份
UPM 增加 RF 操作角色和仓库授权。登录后的 JWT 携带允许访问的仓库范围,后端从认证上下文解析当前操作者。
客户端不能通过请求参数伪造公司或仓库。切换仓库时也必须在服务端 …