库存管理:库存公式、渠道分配、预占释放、防超卖——从0到1搭库存系统的4道关
618大促前夕,一场库存超卖事故让品牌X陷入混乱——500双库存卖出650双,客服组48小时连轴转处理投诉。这背后暴露的是库存管理系统设计的致命缺陷:人工填写的分散式库存分配、缺失的统一管控机制。本文将深度解析库存管理的底层逻辑,从三层结构公式到渠道分配策略,从预占释放机制到并发防超卖方案,带你拆解电商系统中最危险的'库存陷阱'。

6月17日晚上11点,品牌X 的库存负责人小王正在做618大促前的最后一轮检查。
手机震了一下——库存告警群弹出一条消息:

小王愣了两秒。负数?他打开后台,刷新了三遍,数字没变:实物库存500,已售650,可售 -150。
“不可能啊,仓库就500双,怎么卖出650?”他立刻拉了三个渠道的销售数据:天猫卖了280双,京东卖了220双,微信小程序卖了150双。三个渠道加起来——650双。
他翻出运营上周填的库存配置,瞬间明白了:

三个渠道各填各的,加起来1500双可售。但仓库里只有500双。
小王给运营主管打了个电话:”哥,畅跑Pro超卖了150单。”
电话那头沉默了三秒:”客服那边已经炸了,你先别管别的,把三个渠道的这款全部下架。”
接下来的48小时,小王经历了他入职以来最长的两天——客服组加班到凌晨3点处理投诉,运营紧急联系供应商调货(只调到了60双),剩下90单全部取消退款。

事后复盘会上,CTO问了一个问题:“为什么库存分配这件事,是运营在三个后台手动填数字?系统为什么没有统一管控?”
没人回答。
这不是个例。2012年天猫双11,优衣库、阿迪达斯、GAP等品牌集体出现超卖,天猫官方发布公告致歉,为每笔超卖订单赔付货款30%、最高500元。库存超卖是电商系统里发生频率最高、影响最直接的事故类型之一。
这篇文章从小王这次翻车出发,带你理解库存管理的基础体系设计——公式怎么算、渠道怎么分、库存什么时候锁、并发怎么防。
今天讲4件事:

第一关:仓库里500双鞋,到底能卖多少
你可能会想:仓库有500双,那可售就是500呗。
不对。 仓库里的500双,不是都能卖的。
这500双里,80双已经有人下单了还没付款(锁定),50双被运营留给明天的促销活动(预留),还有20双质检不合格等着退供应商(残次)。
所以实际能卖的 = 500 – 80 – 50 – 20 = 350双。
电商系统里完全一样。这就是库存管理里最核心的一个公式:

一句话理解库存的三层结构:

这篇文章讲的主要是销售层——可售怎么算、怎么分配、怎么防超卖。调度层和仓库层涉及WMS和履约系统,后续系列会单独展开。
几个关键细节
- “在途”算不算可售? 在途是供应商已发货但还没到仓库的数量。绝大多数系统里,在途不参与可售计算。 因为到货时间不确定、数量可能有差异(少发/破损),如果把在途也算成可售,就可能超卖。少数系统支持”预计到货后可售”,但这是高级功能,风险也更大。
- “锁定”什么时候解除? 用户下单但没付款,库存就被锁住了。如果他一直不付怎么办?——定时释放。通常15-30分钟未付款,系统自动取消订单、释放锁定库存。大促时可能压缩到5-10分钟。
- “预留”和”锁定”有什么区别? 锁定是用户行为触发的(下单自动锁),预留是运营行为触发的(手动留给某个活动/渠道)。锁定到期自动释放,预留需要手动释放或活动结束后系统回收。
实际项目中的常见争论: 在途要不要算可售?大品牌通常不算(宁可少卖不超卖),快消品/生鲜有时算(周转快、补货频率高)。没有标准答案,取决于业务对超卖的容忍度。
第二关:3个渠道各卖各的,库存怎么分
回到小王的翻车现场:3个渠道各填500,加起来1500,实际只有500。问题出在库存分配模式上。

小王翻车的根本原因:
小王的问题不是”不知道库存只有500″,而是系统没有提供统一的库存分配能力,运营只能在每个渠道后台单独填数字。这是一个典型的系统设计缺陷——把”库存分配”这个本该系统自动化的事情,完全交给了人工。
正确的设计是: 建立一个”中心库存池”,所有渠道的可售库存都从这个池子里扣。运营只需要维护一个数字,系统自动处理渠道间的分配和扣减。
真实案例: 小王复盘会后推动了库存系统改造。技术团队花了3周从独占分配切换到共享库存池,上线第一个月效果就很明显:库存周转率提升了23%——以前经常出现”天猫卖光了但京东还剩200双调不过来”的情况,现在不会了。更重要的是,运营再也不需要在三个后台分别维护库存数字,出错概率直接归零。
第三关:下单到发货,库存经历了什么
用户在APP上点”立即购买”,到最终收到包裹,库存在系统里经历了一系列状态变化。理解这个流程,才能明白”超卖”到底在哪个环节出了问题。

“预占”到底什么时候做?
这是库存设计里一个经典的争论点:
方案1:下单即预占(推荐) — 用户点”立即购买”的瞬间,库存就被锁住。如果30分钟没付款,自动释放。好处是防超卖能力强,坏处是会出现”占着茅坑不拉屎”——大促时大量用户下单不付款,占着库存,真正想买的人看到”已售罄”。
方案2:付款才扣减 — 用户下单时只做检查(”还有库存吗?有”),到付款时才真正扣减。好处是不浪费库存,坏处是下单到付款之间可能有时间差,多人同时下单时容易超卖。
方案3:两段式(最佳实践) — 下单时软锁定(缓存层预占),付款时硬扣减(数据库层面)。既防超卖又减少无效占用。
决策标准: 你的业务更怕超卖(用方案1/3),还是更怕”卖不出去”(用方案2)?高单价商品/限量款通常选方案1,快消品/库存深度大的通常选方案2。

释放机制不能少
不管选哪种预占方案,释放机制必须配套,否则库存会被”僵死”。常见的释放触发点:
- 超时未支付(15-30分钟)
- 用户主动取消订单
- 订单关闭(风控拦截、库存二次校验失败)
- 退货入库(逆向流程回补)

小王的第二次翻车: 共享库存池上线后的第一次大促,小王觉得终于能安心了。结果618当天晚上8点,运营群里又炸了——”畅跑Pro怎么又显示售罄了?仓库说还有200双啊!”小王打开后台一看,200双全是锁定状态,可售为0。排查发现:释放定时任务在晚上7点挂了,大促期间大量用户抢购后不付款,1个多小时积累了200笔未付款订单,全部锁着库存不释放。用户看到”售罄”就走了,实际仓库里鞋还堆着。损失预估几十万GMV。 从此以后,小王在释放任务上加了心跳监控和备用链路——主定时任务挂了,5分钟内自动切到备用。
负库存:允许还是禁止?
释放机制之外,还有一个必须回答的设计问题:可售库存能不能是负数?
策略1:严格禁止(推荐) — 可售库存不允许低于0,尝试扣减到负数的操作直接拒绝。这是防超卖的最后一道防线。
策略2:允许负库存 — 先卖了再说,后续通过紧急补货或调拨补上。适用于供应链极强的场景(如超级大品牌、工厂直发)。风险极高,不建议新系统使用。
决策标准: 你的业务能在24小时内补上超卖的货吗?能 = 可以考虑允许少量负库存;不能 = 严格禁止。大多数品牌应该选策略1。

第四关:大促1000人同时抢,怎么防超卖
回到开头的场景。假设库存分配模式已经改成了共享池,中心库存500双。大促开始,1000个用户同时点”立即购买”——系统怎么保证只卖出500双,而不是501、502?
这就是”库存并发扣减”问题。

超卖了怎么办?(兜底方案)
就算做了三重保障,极端情况下(如缓存集群故障)仍可能出现少量超卖。所以必须有兜底方案:
1. 发货前库存二次校验 — 仓库拣货时系统再查一次库存。如果发现超卖,拦截出库,通知运营处理。
2. 超卖预案 — 提前定好超卖后的处理流程:是补货?等补货后延迟发货?还是取消订单+补偿?补偿金额是多少?这些不能等出事了再临时决定。
3. 超卖监控 — 实时监控可售库存到达阈值时自动告警。比如可售低于10双时通知运营,低于0时自动下架。

小王的方案升级之路: 库存系统改造后的第二次618,小王终于有底气了。他在大促前做了三件事:第一,把防超卖方案从1(纯缓存原子扣减)升级到了3(三重保障);第二,在发货环节加了库存二次校验,拣货单打印前系统自动核一遍库存;第三,提前写好了超卖预案——10单以内的超卖48小时内补货发出,10单以上的直接退款+赔偿50元。这次618,畅跑Pro卖了3200双,超卖数:0单。 小王在大促复盘会上只说了一句话:”去年超了150单花了两天善后,今年0单我花了三周准备。值了。”
产品经理的核心职责不是写防超卖的技术方案,而是回答三个问题: 超卖容忍度是多少(0?还是允许少量)?超卖后处理流程是什么?谁来做决策?把这三个问题答清楚,技术方案研发自然能搞定。
延伸:库存流水——出了问题靠什么排查
库存的每一次变更都必须记录流水,没有例外。 流水包括:谁改的(系统/人工)、什么时候改的、改之前多少、改之后多少、原因是什么(下单/取消/退货/手动调整/盘点修正)。
为什么重要?因为库存对不上的时候,唯一的排查手段就是看流水。没有流水 = 出了问题无法溯源。
小王的教训: 有一天运营反馈某SKU库存突然从500变成了50000。小王排查了半小时,翻遍了订单和入库记录都对不上。最后在库存流水里发现——是运营批量导入时多打了一个0,从”500″变成了”50000″。流水清楚记录了操作人、操作时间和变更前后的值。如果没有这条流水,这个错误可能到发货时才暴露——已经有30多笔订单冲着50000的库存下了单。从此以后,品牌X 的库存管理后台有一条铁律:任何单次库存变更超过总量20%的操作,必须二次审批。

总结:5条库存管理基础认知
- 可售 = 实物 – 锁定 – 预留 – 残次(在途通常不算可售),这是销售层的核心公式
- 多渠道库存分配推荐”共享池 + 安全水位”,不要让运营手动分配
- 下单即预占、超时自动释放,是防超卖的基础设计;负库存一般严格禁止
- 防超卖方案分三级:缓存原子扣减 → 缓存+数据库双层 → 三重保障(大促必备)
- 库存流水必须全量记录,否则出问题无法溯源;大额变更加二次审批
一句话总结: 上篇讲的是库存管理的”地基”——公式算清楚、渠道分合理、预占要释放、超卖要防住、流水要记全。地基打好了,才能应对下篇的进阶场景。
下一篇(库存管理下篇),我们讲5个进阶修罗场——门店50家库存怎么同步、预售3000单虚拟库存怎么管、退货率40%的库存怎么回补、全渠道一盘货怎么打通、大促库存怎么冻结和解冻。
作者:Zoe产品手记 公众号:Zoe产品手记
本文由 @Zoe产品手记 原创发布于人人都是产品经理。未经作者许可,禁止转载
题图来自作者提供
- 目前还没评论,等你发挥!

起点课堂会员权益




