【经验篇】一货多位设计方案的全链路复盘
货位设计的复杂性远超想象,从一货一位到存拣分离的升级过程中,隐藏着库区抽象、货位类型、库存维度等多重陷阱。本文将深度剖析仓储系统改造中的五大典型问题,揭示如何通过前瞻性设计规避业务发展带来的架构风险,为产品经理提供一套可复用的库存管理系统优化方法论。

这一次主要想跟大家探讨的是关于货位设计的问题,在初始过程中踩了很多坑而不自知,还是随着业务的发展以及功能上线后用户的不断使用,这些坑逐渐的暴露出来,填满这些坑的过程漫长又复杂,所以想把这些经验教训总结下来
一、概念&背景
讲背景前先说下货位与商品的关系,然后在说下为什么会做这个需求。其实货位与商品一共分为4种关系,即一货一位、一货多位、多货一位、多货多位4种模式,分别什么意思呢?
概念
货位:又称库位,是仓库中最小的存货单位,货物一般都是放到货位上存储(例如下图,A-01-01这就是最小的货位)

商品:指的是SKU,即最小库存单元,例如iphone 16 256g 蓝色 就是SKU,可以精准的定位到是哪一件商品了
货位&商品的关系:

背景
笔者的系统原来仅支持一货一位和多货一位,但是随着业务的发展,目标用户群体也在发生改变,所以就延伸出商品需要放在多个货位上的诉求。当用户囤货量比较大时,没办法将所有货物放到一个货位上,所以就需要将货物放到多个货位上。
根据上述背景,关于系统方案的选型:
在刚开始做这个需求时,因为业务经验不足,也是从网上查阅了大量的资料,奈何当初入行不久,现在回想来看当初的方案设计和思路都是存在问题的,因此本文从历史方案逐步到正确方案展开探讨。经过查阅大量资料后,得出处理一货多位的场景,在业内有两种做法:全场通拣和存拣分离。这两个什么意思呢?
- 全场通拣:整个仓库都是拣货区域,不划分额外的存货区域
- 存拣分离:划分存货区域和拣货区域,通常来讲存货区域会大于拣货区域
基于上述两种场景,大家认为应该选哪种解决方案呢?欢迎留言探讨
不卖关子了,在笔者的设计中,最终选择了存拣分离作为解决一货多位的方案,为什么?我们来看全场通拣和存拣分离上的差异:

基于上述情况,结合用户群体的画像,考虑绝大部分卖家都是以中小型商品居多,并且调研过的客户大部分仓库基本都会划分存货区域与拣货区域,因此选择了存拣分离的方案(拣货区域一货一位,存货区域一货多位)。基于此方案,让我们看看在接下来的方案设计过程中踩了哪些坑。
二、方案设计&问题点
系统现有逻辑:
1、库存维度:库存维度目前可以理解为SKU维度
2、销售订单预占库存逻辑:订单同步进入系统就执行预占,减少对应SKU的可用库存,增加SKU的预占库存
3、各种出入库单据:目前选择SKU即可进行出入库,库存直接加减到SKU即可
基于上述现有逻辑,如果要实现存拣分离模式的一货多位,我们要改动的点有哪些呢?
1、库存维度:因为区域划分拣货区域和存货区域,两个区域对应不同的货位,SKU可以放到货位,所以库存维度需要变成SKU+货位维度
2、区域&货位的关联关系:系统写死了拣货区域和存货区域两个概念,支持货位关联区域,当货位关联拣货区域时,则代表此货位支持销售订单出库时的拣货动作,即可执行预占库存逻辑;如果货位关联存货区域,则代表此货位属于存货位,不支持销售订单的预占库存
3、预占库存:根据上述区域,顾名思义,只有拣货区域的货位才能参与订单的预占库存,所以订单预占库存逻辑需要预占SKU对应拣货区域货位的库存,不能预占到存货区域的库存。所以在此逻辑上改造为二段预占库存的逻辑:
- 抽象出仓库库存概念:这部分库存为SKU拣货区域库存+存货区域库存,是对外可销售的库存总数(同步给电商平台的可售库存),订单产生同步进入系统后优先预占整仓库存(可能预占到存货区域库存)
- 货位库存:具体货位上的库存,即最小维度为SKU+货位,订单审单通过后,预占到具体的拣货区域货位库存,如果拣货区域库存不足,则进入货位缺货(此时代表存货区域有库存,要执行补货动作了)
4、各种出入库单据:出入库时,由原来选择SKU变更为选择SKU+货位,需要指定具体是哪个货位出库,这样系统才能知道增减哪个货位的库存
5、新业务-补货:因为划分了拣货区域和存货区域,拣货区域库存不足时,需有创建补货任务从存货区域补货到拣货区域。前期定义此逻辑时由系统或用户手动生成,但只能有一笔处于作业中的单据,如果作业中的单据未结束,则不能新建单据
大家看完改动方案后,有发现里面的问题点吗?可以思考下
—思考分割线—
其实问题点主要有以下几个:
1、库区抽象概念不足:做需求时,仅抽象了拣货区域和存货区域的概念,但明显这个抽象是不足的,随着业务经验的增加,发现仓库的划分其实一共分为三层:仓库>库区>货位。所以库区应该同货位一样,属于基础资料,用户可自定义
2、货位类型抽象不足:上述方案中,是通过拣货区域和存货区域来定位货位类型的,但是明显货位的类型不应该由区域定义,应该是一个独立的属性,用来定义货位属于拣货位还是存货位。为什么这么说呢?举个例子:如果用户的A区域属于拣货区域,但是A区域中也可能有存货位的存在,所以用区域定义货位类型拓展性是不足的(尤其是中高位货架时,下层拣货,上层存货的场景)
3、库存最小维度拓展性不足:上述方案里面把库存最小维度由SKU变为了SKU+货位,但是你发现这并不是最小的库存维度,如果后面有批次业务,并且货位上允许混批(混批指一个货位上可以放SKU多个批次的库存),此时库存的最小维度应该是批次库存,即SKU+货位+批次是最小维度。如果从前期没定义好最小库存维度,则后续这部分还是有很大的改动调整。关于三种库存维度的差异,后面会写一篇文章单独介绍
4、补货场景考虑不完善:上述方案定义时只能存在一笔作业中的单据,此时限制性很大,有几个场景无法很好的覆盖,例如:
- 多员工并行补货:用户SKU种类多,需要分配多个补货员并行补货时系统无法支撑
- 按SKU区分补货:用户SKU体积和重量有较大不同时,需要区分不同员工补货不同商品时也无法支撑。例如大件商品给到男员工补货,小件商品给到女员工补货
- 补货优先级:补货可以分为日常补货和拣货位缺货补货;日常补货指的是拣货位库存低于设置的最低水位时的补货动作,此时补货数量可能比较多;而拣货位缺货指的是销售订单已经审核通过等待作业,此时拣货位上没库存需要紧急补货的场景,此时补货数量少而急,因为要保证订单的优先出库。上述设计中并没有体现这两种,导致用户无法安排补货的优先级
所以基于上述几种情况,后续也是针对补货功能进行了升级,即系统区分日常补货和缺货补货,其次就是针对不同类型可以设置不同补货策略,例如补货策略中可以设置按SKU种类数、总数量或者重量等,系统会按上述策略生成不同的N笔补货单
5、存货位不支持预占库存:在某些场景下,用户销售订单需要大批量出库时,此时为了减少补货动作,所以需要优先预占存货位库存出库。例如SKU为爆款或者线下批发单,这种大批量出库的场景肯定不能从拣货位出,毕竟拣货位容量有限并且是零散库存,所以抽象出来就是优先预占存货位库存的策略:即定义爆款单优先预占存货位库存或者订单中SKU数量大于x的优先预占存货位库存;这样可以避免这种大批量频繁出库的SKU消耗拣货位上的零散库存,从而减少了从存货位补货到拣货位的动作,同时又不会影响非上述场景的订单(其他场景的单可以从拣货位出),提高仓储作业效率。
三、结尾
写到这里差不多就结束了,因为有些信息需要脱敏,所以有些描述的不是很详细,大家有问题可以评论区留言探讨哦。剩下还有一些零零散散的坑点,就不一一描述了。
通过本文主要来说就是希望提醒大家,在做产品方案设计时,一定要考虑好方案的完整性和拓展性,以及把方案迭代内容传递给研发同学,这样研发同学在写技术方案时也会预留好拓展空间,避免后续调整时产生的高成本。
以上,最近也在做一个POD行业的业务场景,下次说不定就分享这个的设计经验,或者还有波次和采购全流程的一些经验,大家想看哪个也可以留言,相信我会发奋图强努力码字的,哈哈哈,下次见咯~
本文由 @铁锅炖PM 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 Unsplash,基于 CC0 协议。
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
- 目前还没评论,等你发挥!

起点课堂会员权益




