SaaS架构:中央库存系统架构设计

大家好,我是汤师爷~

近年来,越来越多的零售企业大力发展全渠道业务。在销售额增长上,通过线上的小程序、直播、平台渠道等方式,拓展流量变现渠道。在会员增长方面,通过多样的互动方式,全渠道触达消费者,扩大会员规模。而全渠道的库存管理,逐渐变成零售商在渠道运营方面的核心活动,也是提高库存周转率,保证利润的关键所在。

在全渠道模式下,各渠道必须有足量的商品来满足客户需求,同时需有效管理总库存,平衡各渠道库存,以减少缺货或者滞销的情况发生。

全渠道模式下,库存管理面临的挑战

在线上线下渠道融合的大背景下,零售企业如果没有管理好全渠道库存,会带来诸多问题:

  • 各渠道库存割裂,进行线上线下促销活动时,商品超卖,引起客诉。
  • 各渠道库存分配不合理,要么缺货,要么库存积压。
  • 各渠道库存数据更新不及时,有货却不能下单,销售机会大量流失。
  • 各地库存数据分散在各系统中,数据不通,无法知晓库存分布情况,无法统一采购/调拨。
  • 无法根据用户的下单信息,进行智能分仓、就近发货。

中央库存系统的定位

向下对接各地仓库/门店库存,将各地库存放在“一盘货”里,进行管理、统一调配。

向上打通所有销售渠道平台,实现全渠道库存共享、自动化运营。

中央库存系统的关键概念

中央库存整体业务框架

中央库存体系将库存管理分为三层,销售层、调度层、仓库层,实现库存利用最大化,支持多仓多渠道模式下的各种业务场景。

仓库层

仓库层的定位是管理仓库库存,一般使用仓库WMS、门店系统或ERP系统来管理仓库的进销存,通过出入库单据变更仓库库存数量。

仓库库存的关键属性包括:货主、仓库/门店、SKU、批号、生产日期、库存状态、库位等。

  • 货主:货物所有权的拥有者。
  • 仓库/门店:存储货物的逻辑单元,这里需要与物理世界的仓库区分开,可能一个物理仓库包含多个逻辑仓库单元。
  • 批号:用于区分每一批投料生产出来的产品,为了事后能追踪这批产品的责任,每一批产品都有相应的批号。
  • 生产日期:生产线包装出可销售的成品的日期与时间。
  • 库存状态:描述库存在不同业务场景下的不同状态,例如,可用、冻结、在途、不良品、废品等。
  • 库位:一般是指在工厂仓库中实际存在的库位,比如一个个的货架。同时也是SKU库存的最小粒度。

调度层

调度层的定位是汇总各仓库/门店的所有库存状态的库存总量,但不同于仓库库存,调度层的实物库存无需管理批号、库位等细粒度的库存维度,只需要管理每个库存状态下的实物库存总数即可,这是一种解耦的设计方式。

实物库存的关键属性包括:仓库/门店、SKU、库存状态等。关键概念包括:

  • 在途库存:指供应商发货但还未入库的库存,有时为了扩大销售机会,在途库存也会用于扩大销售库存数量。
  • 可用实物库存:仓库实际可用于销售的库存。
  • 不可用实物库存:即对应仓库中的不可用库存。
  • 销售预占库存:订单提交并分仓成功后,会预占对应仓库的库存,订单取消或发货后,会扣减预占库存。
  • 销售可用库存:销售可用库存=可用实物库存-销售预占库存。

销售层

销售层的定位是管理各个销售渠道的渠道库存,为销售平台提供库存计算与库存同步的服务,并通过各种渠道库存分配策略进行库存分配,防止超卖,保障利润最优。

销售库存的关键属性包括:

  • 销售渠道:包括自营的网店、门店线下渠道,天猫,京东,美团,饿了么等三方平台等。
  • 销售店铺:销售的店铺或门店。
  • 发货方式:快递、同城配送、自提。
  • 配送区域:由于各个仓库覆盖的配送区域不一样,所以SKU能支持的配送范围也不同。

销售库存的关键概念:

  • 销售可用库存:按照仓库/门店的供货关系、渠道库存分配策略进行计算汇总的可销售的库存数量。订单提交成功扣减销售可用库存,当调度层的实物库存更新,需要触发销售层重新计算销售可用库存。
  • 预售库存:如果商品未到货,可以开启预售模式,提前售卖。实物库存与预售库存是隔离开的,当实物到货后,预售库存统一推到实物库存进行履约。
  • 预占库存: 订单已提交但未支付之前,为给顾客预留商品,会先预占商品库存,待支付以后再删除预占库存、扣减可销售库存。若长时间未支付,则会取消订单,释放预占库存。
  • 活动库存:针对某些SKU做促销活动时,例如特价、秒杀活动,需要设置活动库存,可以从正常库存中预留部分库存,活动开始后释放预留库存。如果活动商品的下单数量等于活动计划的库存总数量,则活动终止。活动订单与普通订单,在库存处理逻辑上是一模一样的。如果没有特殊要求,没必要单独把活动库存单独分出来,作为独立的业务处理,这样会多出两套库存逻辑,三层库存架构需要都独立分开处理,极大地增加了复杂度。
  • 预留库存:若需要提前为某些促销活动预留库存,以免活动开始以后库存不足,可设置预留库存。
  • 可售库存 = 预售库存+销售可用库存 – 预占库存 - 预留库存。

销售渠道层

销售渠道层代表各个销售渠道平台,包括自营的网店、门店渠道,天猫,京东,美团,饿了么等三方平台等。

逻辑模型设计

库存的核心场景

调度层同步逻辑

调度层的实物库存来自各个仓库的库存,一般有两种同步模式:

  • 流水同步模式:适用于内部系统打通,能够获取仓库/门店的库存流水,通过回传流水,变更调度层的实物库存数量。这样做的好处是,有很清晰的实物库存流水变更记录,便于追查到每次库存变化的明细,需要注意做好幂等处理,避免重复同步导致库存数量变更出错。
  • 数量同步模式:适用于外部系统对接,一般获取不到详细的库存流水,通过商家后台或系统对接的方式同步库存实时数量。

销售库存计算逻辑

在新零售的多仓多渠道模式下,为了实现全渠道库存共享,库存汇总为“一盘货”管理,要充分考虑各个仓库/门店的特性,包括支持的发货方式,配送范围等,为了合理分配库存,需要考虑各个销售店铺的库存占比。下面针对几种常见的场景,说明销售库存的计算逻辑。

多仓供货场景

门店A、门店B为两个线下门店,门店A有100件iphone14,门店B有50件iphone14。

假设商家有1个天猫旗舰店,门店A、门店B均给天猫店供货。

天猫旗舰店仅支持快递发货方式,为了防止超卖,设置快递的最大分配比例为80%。

如图例所示,最终天猫渠道的iphone14的库存数量为120,并定期将数量同步到天猫平台。

单仓给多店供货场景

商家有1个电商仓,为商家的各个电商平台店铺提供仓储服务与发货服务,电商仓有100件iphone14。

电商仓同时为京东旗舰店、天猫旗舰店供货,两个店铺仅支持快递发货方式,最大分配比例分别为40%、60%。

如图例所示,最终京东渠道的iphone14的库存数量为40,天猫渠道的iphone14的库存数量为60。

门店全渠道库存共享场景

随着新零售线上线下渠道加速融合,门店线上线下全渠道销售,已经成为大部分零售商家的标配。

受益于微信生态和小程序电商的高速发展,越来越多的门店开启了云店模式,云店实际上就是门店的线上化交易渠道,或者称为门店的“线上货架”。

连锁企业把线下门店嫁接到微信生态中,将门店所有商品上架到云店小程序。借助云店,消费者无需到店,即可享受到门店的服务,同时,门店的导购可以向自己的会员推荐所有云店商品。

如图例所示,门店A有100份的草莓蛋糕,门店A为自己供货,并共享草莓蛋糕的库存到多个销售渠道(美团外卖、云店、门店线下渠道),实现门店“一盘货”全渠道销售。

渠道库存同步

销售库存计算完后,需要将渠道库存同步到各个平台渠道,这样,消费者才能完成交易流程。根据渠道类型不同,渠道库存同步有两种处理逻辑:

  • 自营系统:如果自营渠道与库存系统是一体的,即一套系统,那么不需要过于复杂的库存同步逻辑,自营渠道直接读取中央库存系统的渠道库存即可。
  • 三方平台系统:像天猫,京东,美团,饿了么等,这些三方平台系统属于外部系统,商家自身无法管控,就需要通过开发API,向三方平台同步渠道库存。一般而言不会实时同步渠道库存,即只要有库存变动,就计算渠道库存,同步至三方平台。这种方式对系统压力较大,而且三方平台的API大多会按调用量收费,因此,会设定好时间间隔,定期同步渠道库存,例如5分钟一次。

组合商品库存计算

组合商品一般指人为将几个单独售卖的商品组合在一起,进行合并售卖的商品,例如:下午茶套餐、七夕美妆组合等。

组合商品会先在调度层,根据组合比例计算好虚拟库存,不影响子商品的供货逻辑,下单时,会根据组合商品标识,进行子商品的实物库存预占、扣减。

如图所示,电商仓中,商品A有150件,商品B有200件,根据组合关系,可以算出组合商品C有100件。当下一单商品C时,会预占1件商品A+2件商品B的实物库存。

中央库存系统的应用架构设计

小结

本文介绍了在全渠道模式下,库存管理面临的挑战。

针对挑战,详细介绍了中央库存系统的整体业务框架,涉及的关键概念,以及库存核心业务场景的处理逻辑,最后简单介绍了中央库存系统的应用架构设计。

本文已收录于,我的技术网站:tangshiye.cn 里面有,算法Leetcode详解,面试八股文、BAT面试真题、简历模版、架构设计,等经验分享。