召回演练:2 小时内定位全部批次

先说结论:模拟召回 2 小时搞不定的仓库,问题从来不在演练当天,而在演练前一年半。

上个月我去一家南加的冷链食品仓看他们做模拟召回。周三上午 9 点,召回负责人发出模拟通知:某批次的冷冻虾仁疑似李斯特菌污染,要求 2 小时内定位该批次的全部去向。结果呢?11 点过了,库里还有三板货的批次对不上,WMS 里能查到出库记录,但收货客户的联系电话是三年前的,打过去是个空号。下午 4 点才算勉强收尾。

我跟他们仓储经理说了一句话:你们这套流程,真出事了,FDA 给你的 24 小时你勉强用得完,但前 2 小时你会先把自己吓死。

为什么是 2 小时?FSMA 204(FDA 的食品可追溯性规则)要求,FDA 索要记录后,企业必须在 24 小时内提供可排序的电子表格——注意,是电子表格,不是 PDF,不是纸单。这 24 小时是法定时钟。但 2 小时是仓库自己的时钟:2 小时内把受影响的全部批次定位出来,后面才有时间做客户通知、隔离、下架、写报告。2 小时搞不定,后面全是连锁超时。

顺带说一句,FSMA 204 的合规期限 FDA 已经提议推迟(原定 2026 年 1 月,现提议延到 2028 年 7 月,具体以官网最新政策为准)。期限推了,规则本身没变:追溯批次码、关键数据要素、关键追踪事件、记录保存两年——这些一个都不会少。现在练,正好。

演练前 7 天:先把清单锁死

演练当天手忙脚乱,十有八九是准备没做。我要求客户演练前 7 天必须锁死这份清单:

指定一名召回负责人,全权说了算。演练当天所有指令只从他嘴里出来,不许七嘴八舌。负责人提前拿到模拟召回通知的模板:SKU、批次号、疑似原因、发出时间——但通知发出的具体时刻,只有他和我知道。

选批次有讲究。别选那种上个月刚入库、还没动过的"干净"批次,那是自欺欺人。挑一个真实动过的:至少出过两次库、最好还掺过一次退货的批次。如果仓里有 FSMA 204 追溯清单上的品类(绿叶菜、番茄、软奶酪、带壳蛋、坚果酱、海鲜都算),优先从里面挑——真出事概率最高的就是它们。

然后是数据准备。提前一天,负责人自己(注意,是自己,不许叫 IT 帮忙)在 WMS 里跑一遍:这个批次当前在哪些库位、各有多少;过去 90 天的出入库记录能不能一次导出来。如果他自己跑不出来,演练当天一定超时——这就是预检的意义。

还有几件小事:准备一批"召回冻结"的不干胶标签和隔离区围栏;把客户联系人清单打印一份纸质版(演练当天就当系统宕机了,看纸质版能不能打通电话);跟财务打个招呼,演练当天冻结的库存不许任何人以"客户急单"为由解冻。

最后一条可能有点反常识:提前 48 小时只通知召回小组,不告诉一线操作员。演练要的就是措手不及,全员都知道了时间地点,练出来的是表演。

2 小时怎么切:15 分钟一个节点

演练当天,我习惯把 2 小时切成 8 个 15 分钟的节点,每个节点有且只有一个交付物。超时 10 分钟就直接记下来,不许"再给我 5 分钟"——真召回时 FDA 可不会等你。

0:00–0:15,启动。召回负责人发出模拟通知,召回小组成员到会议室(或库里指定集合点)报到。第一个动作:在 WMS 里把该 SKU 的所有批次状态改成冻结。注意,是所有批次先全冻,再慢慢解冻没问题的——顺序反了就可能有人在这 15 分钟里又发出一板问题货。交付物:冻结操作截图或系统记录。

0:15–0:30,拉数据。导出三样东西:该批次当前库存明细(库位、数量、状态);该批次过去 90 天的出库记录(日期、客户、单号、数量);该批次的收货记录(供应商、到货日期、进货批次号)。交付物:三张表,缺一不可。很多仓库卡就卡在这里——WMS 里根本没有批次字段,只有 SKU 和数量。那这场演练可以直接停了,先回去把系统修好。

0:30–0:45,实物对账。两个人一组,拿着库存明细去库位上数。数出来的数量和系统对不上?记下来,这是演练最有价值的发现。每个确认有问题批次的库位,贴上冻结标签。冷冻库注意:标签会被冻掉,提前准备低温胶带——别问我是怎么知道的。交付物:盘点差异表。

0:45–1:00,前后追溯。往前:这个批次是哪天从哪个供应商收的货,进货批次号是什么,同车还有没有别的批次(同车混装是交叉污染的高发区)。往后:发给了哪几个客户,各发了多少,用的哪家承运商。交付物:一张"批次去向图",一页纸能画完最好。

1:00–1:15,模拟通知客户。真的打电话。话术提前写好:"您好,这里是某某仓库,我们正在做模拟召回演练,贵司 X 月 X 日收到的某批次货物在演练范围内,请问当时收货数量是多少、是否还有库存?"记录:接通了几个、几分钟接通、对方能不能说清库存情况。打不通的,记下来——真召回时这就是你的风险敞口。

1:15–1:30,汇总定位表。把三部分拼起来:库内剩余多少、已发给客户多少、差异多少。算一个数:召回覆盖率 = 已定位数量 ÷ 该批次总数量。我的标准:98% 以上算过,95% 以下算没过。别觉得 95% 很高——剩下的 5% 如果是 200 箱货不知去向,FDA 照样找你麻烦。

1:30–1:45,隔离演练。把库里的问题批次实物移到隔离区,或者原地用围栏圈起来、挂牌。拍照片留档。交付物:隔离完成确认单。

1:45–2:00,收尾。负责人用 15 分钟写出演练初报:各节点实际用时、覆盖率、发现的问题清单。不用完美,但必须当天出来——拖到下周写的复盘,细节全忘光了。

手持扫码枪扫描托盘上货物的批次条码

演练为什么总超时

做了这么多年演练,我总结下来,卡点永远是那几个,而且全是"平时"的病:

第一,WMS 里没有批次字段,或者有字段没人填。很多仓库的 WMS 当初上线时为了省事,收货只扫 SKU,批次和效期靠纸单记。纸单一丢,批次就断了。FSMA 204 要的是追溯批次码,从初始包装或加工环节赋码,往下游每个环节都要带着走。你收货那一关不扫,后面全是窟窿。

第二,混批上架。一个托盘上放两个批次的货,或者补货时把新批次直接倒进旧批次的库位。这种在常温仓常见,冷冻仓更常见——因为大家都不想在零下 20 度里多待一分钟。演练时一盘点,数量对上了,批次对不上了。

第三,退货又混回去。客户退回来一板货,收货员图省事,直接上架到原来的库位,系统里还是原来的批次。真召回时,这板货的"去向"在系统里显示"已发出",实际上它又回来了——你的覆盖率永远算不平。

第四,客户联系人是三年前的。销售换了三茬,客户收货部的电话没人更新。演练时打过去是空号,真召回时你拿什么在 24 小时内通知完?

第五,3PL 仓的数据要等对方回邮件。如果你是货主、货在第三方仓里,演练前先跟 3PL 确认:他们能不能在 30 分钟内给你批次级的库存和出库数据。不能的话,换仓,或者逼他们升级系统——这条要写进 3PL 合同里。

药品仓多说一句。处方药这边是另一套规则(DSCSA,要求单品级序列化:GTIN 加序列号加批号加效期,打在二维条码里),仓库要在收货、拣选、打包、发货每个环节扫码,召回或疑似问题药品调查时要能快速提供追踪信息。逻辑和食品一样:平时不扫,演练时抓瞎。

演练完别只拍张合影

演练结束的标准动作不是聚餐,是一份复盘报告。我要求客户的复盘必须包含这几项,缺一个都不算完:

演练基本信息:日期、参演人员、模拟的 SKU 和批次、发出通知的准确时间。8 个节点的计划用时和实际用时对照表——超时超过 10 分钟的节点标红。召回覆盖率:已定位数量、应定位总数、百分比,我的线是 98%。

然后是问题清单,按严重程度分三级:致命(比如 WMS 无批次字段,这种不解决下次还超时)、重要(客户电话打不通、隔离区不够大)、一般(标签冻掉了、会议室投影仪不好用)。每一项后面跟改进措施、负责人、截止日期。没有负责人和截止日期的改进项,等于没写。

最后定下次演练日期。我的建议:食品仓一年至少两次,上下半年各一次;如果上次覆盖率没过 95%,三个月内加做一次。演练频率写进质量手册,别靠人记。

还有个小建议,成本为零:每个月随机抽一个昨天出过库的批次,给仓储主管 15 分钟,看他能不能说出这批货现在在哪、发给了谁。15 分钟说不清的,你的 2 小时演练也不用做了,先回去把收货那一关修好。

说到底,模拟召回练的不是那 2 小时,练的是平时每一次收货扫码、每一次按批次上架。演练当天能定位出来,是因为过去 300 天每一天都做对了。