给电商公司做单号自动回填时,我们遇到过这样一幕:脚本点了「发货」,填了单号,提交,接口返回「操作成功」,日志一片绿。第二天客户发现,有一单在后台里仍然是「待发货」。
为什么会这样
平台后台的「操作成功」只表示请求被收下了,不表示业务真的完成。中间可能被风控拦截、被验证码打断、被页面改版吃掉。脚本看到的是过程,客户看到的是结果。
判据要落在最终态
我们把每一步自动化的成功判据都改成:回到列表页,看那条记录的状态是不是变成了目标状态。
- 回填单号:列表里这单显示「已发货」才算成功。
- 发布商品:商品列表里出现且状态为「在售」才算成功,发布接口返回 0 不算。
- 写入表格:读回来那一行,和写进去的一致才算成功。
没到最终态的,一律判失败,并且当面告警到企业微信群,@ 到具体的人。
失败要当面报,不要自己兜
自动化最危险的写法是 try … except: pass。它让脚本永远不报错,也让客户永远不知道哪里出了事。我们的脚本失败时会做三件事:截图、记录原因、推送告警。修不修是人的决定,但必须先让人知道。
「没报错」只说明脚本没崩,不说明活干完了。

