1. 商品管理中的多规格与多单位设计解析
在供应链系统(SCM)和电商后台设计中,商品管理是最基础也是最复杂的模块之一。我经历过多个电商系统的搭建,发现90%的初期设计问题都源于对"多规格商品"和"多单位商品"的理解偏差。这两个概念看似简单,但在实际业务场景中,它们的差异会直接影响库存管理、订单处理和财务核算的每一个环节。
多规格商品(Multi-SKU)和多单位商品(Multi-Unit)是商品管理的两个基本维度。前者解决的是"商品有哪些变体"的问题,后者解决的是"商品如何计量"的问题。举个例子,一家服装店卖T恤,有红、蓝、黑三种颜色,每种颜色又有S、M、L三个尺码,这就是典型的多规格商品;而如果这批T恤可以单件销售,也可以按打(12件)批发,这就是多单位商品的应用场景。
2. 多规格商品的系统设计与实现
2.1 多规格商品的核心特征
多规格商品的本质是同一商品的不同变体。我在设计某服装电商系统时,曾遇到一个典型案例:一款男士衬衫,有5种颜色、4个尺码,理论上应该有20个SKU。但实际运营中发现,某些颜色和尺码的组合(如XXL码的粉色衬衫)根本不会生产,如果简单做笛卡尔积计算,会导致系统中有大量"僵尸SKU"。
多规格商品的关键特征包括:
- 属性组合决定具体规格:颜色+尺码、内存+颜色等
- 每个规格对应独立的库存和价格(可以相同)
- 规格间存在排他性,客户购买时只能选择一种
- 前端展示通常采用矩阵选择器(颜色竖排,尺码横排)
2.2 规格属性体系的设计实践
在设计规格系统时,我总结出几个关键点:
-
属性分类管理:
- 视觉属性:颜色、图案等(前端需要展示图片)
- 功能属性:内存、容量等
- 包装属性:单装、礼盒装等
-
规格价格策略:
- 基准价+属性加价(如基础款199元,红色加20元)
- 独立定价(每个SKU单独设置价格)
- 阶梯定价(批量购买不同规格有不同折扣)
重要提示:规格价格变动时,务必考虑历史订单的价格保护问题。我们曾因忽略这点导致大量客诉。
2.3 库存管理的特殊考量
多规格商品的库存管理有几个易错点:
- 库存共享问题:某些情况下不同规格可共享库存。比如手机的不同颜色版本,如果颜色只是后壳不同且可更换,实际可以共用库存。
- 预售与库存预留:热门商品的不同规格可能有不同的预售策略,需要单独配置。
- 库存预警阈值:畅销规格(如iPhone的256G版本)需要设置更敏感的库存预警。
下表展示了某服装SKU的库存管理示例:
| SKU编码 | 规格组合 | 当前库存 | 安全库存 | 在途库存 |
|---|---|---|---|---|
| TX-RED-S | 红色/S码 | 156 | 50 | 200 |
| TX-BLUE-M | 蓝色/M码 | 89 | 30 | 150 |
3. 多单位商品的系统实现方案
3.1 多单位商品的核心逻辑
多单位商品的本质是计量方式的转换。在开发生鲜电商系统时,我们发现单位转换的精度问题尤为关键。比如:进口牛排按"克"采购,按"份"销售(1份=200g),但实际切割时可能有±5g的误差。
多单位系统的设计要点包括:
- 必须维护精确的单位换算关系(1箱=12瓶)
- 基础单位(Base Unit)的选择至关重要
- 价格换算需要考虑进位规则(99.9元是否显示为100元)
- 库存变动需要在所有单位间同步更新
3.2 单位换算的三种模式
根据业务场景不同,单位换算通常有三种实现方式:
-
固定比例换算:
- 如1箱=12瓶,比例恒定
- 系统实现最简单,适合预包装商品
-
浮动比例换算:
- 如1斤≈500克,但实际称重可能是498g或503g
- 需要记录实际换算比例
- 常见于生鲜、散装食品
-
独立单位体系:
- 如布匹可以按"米"或"卷"销售,但每卷长度不固定
- 需要单独记录每个"卷"的实际米数
- 系统复杂度最高
3.3 采购与销售单位的差异处理
在实际业务中,采购单位和销售单位往往不同。我们曾遇到一个典型案例:某餐厅供应商按"公斤"报价,但餐厅内部按"份"计算成本,而每份的重量会根据厨师的实际操作有浮动。这需要系统支持:
- 采购入库时按公斤记录
- 厨房领用时按份扣除
- 定期进行库存盘点校准
- 成本核算时按实际消耗量计算
解决方案是建立"理论换算率"和"实际换算率"两套体系,并通过月结差异调整来平衡。
4. 混合场景下的复杂商品管理
4.1 规格与单位的组合应用
许多商品同时具备多规格和多单位特性。以矿泉水为例:
- 多规格:500ml瓶装、1L瓶装(不同规格)
- 多单位:500ml规格可以单瓶卖,也可以12瓶/箱卖
这种情况下,系统需要支持:
- 按规格筛选商品
- 在选定规格后选择购买单位
- 库存扣减时精确到具体规格和单位
4.2 价格体系的叠加计算
当规格和单位叠加时,价格计算变得复杂。我们设计了一套优先级规则:
- 先确定规格基础价
- 应用规格级折扣(如红色款8折)
- 根据购买单位转换价格
- 应用单位级优惠(如整箱购买减10元)
例如:
- 红色手机(规格价2999元,红色款优惠200元)
- 套装版(含耳机,加300元)
- 批发10台以上再打9折
4.3 库存同步的挑战
混合模式下最大的挑战是库存同步。我们曾遇到一个bug:当用户以"箱"为单位下单时,系统只扣减了"箱"库存,没有同步扣减对应数量的"瓶"库存,导致超卖。解决方案是:
- 建立库存变动事务锁
- 先扣减最小单位库存(瓶)
- 再更新聚合单位库存(箱)
- 记录完整的库存变更流水
5. 实际业务中的常见问题与解决方案
5.1 规格爆炸问题
当商品属性过多时,SKU数量会呈几何级增长。某化妆品项目最初设计有:
- 5种香型
- 4种容量
- 3种包装
- 2种配方
理论上会有120个SKU(5×4×3×2)。我们通过以下方式优化:
- 动态规格:只有实际生产的组合才生成SKU
- 属性依赖:某些属性组合无效时不生成SKU(如儿童款不会有XXL尺码)
- 延迟绑定:先卖通用SKU,后让客户选择具体属性
5.2 单位换算的精度问题
在生鲜电商中,单位换算常有误差。我们采取的解决方案是:
- 采购按精确单位(克)
- 销售按模糊单位(份)
- 设置合理的误差范围(±5%)
- 定期盘点校准库存
5.3 多仓库库存分配
对于跨仓库的商品,需要考虑:
- 规格级库存策略:畅销规格多仓库备货
- 单位级调拨规则:整箱调拨更经济
- 安全库存计算:考虑单位转换因素
下表展示了某商品的跨仓库库存策略:
| 仓库 | 规格 | 单位 | 安全库存 | 补货周期 |
|---|---|---|---|---|
| 北京仓 | 500ml | 瓶 | 1000 | 2天 |
| 北京仓 | 500ml | 箱 | 50 | 1周 |
| 上海仓 | 1L | 瓶 | 800 | 3天 |
6. 系统设计的最佳实践
经过多个项目的积累,我总结出几条核心经验:
-
基础单位选择原则:
- 选择最小销售单位作为基础单位
- 确保基础单位不可再分割
- 所有业务操作最终都转换为基础单位计算
-
规格属性设计技巧:
- 将高频变更属性(如价格)与低频属性(如颜色)分离
- 为视觉属性维护独立的媒体资源库
- 建立属性继承机制(子SKU继承父商品的部分属性)
-
性能优化方向:
- 库存查询使用物化视图
- 价格计算采用缓存策略
- 建立规格-单位的联合索引
-
扩展性考量:
- 预留自定义属性字段
- 支持动态单位换算规则
- 设计可插拔的价格计算模块
在实际开发中,我们团队现在会先绘制完整的商品状态转换图,明确每个业务操作(上架、下单、退货等)对规格和单位的影响,这种"设计先行"的方法帮我们避免了后期大量的返工。