庫存系統:倉庫層、排程層、銷售層的庫存資料模型設計

架构师汤师爷發表於2024-11-27

大家好,我是湯師爺~

讓我們深入探討庫存概念模型設計,這是實現庫存管理系統的基礎,也是確保庫存資料準確性和一致性的關鍵。

庫存的資料模型設計

如圖所示,展示了庫存概念模型設計。透過合理的概念模型設計,我們可以更好地支援庫存管理的各項業務需求。

倉庫層

倉庫層是實際存放和管理商品庫存的層次,執行具體的倉儲作業任務。它包括企業自營倉庫、第三方物流倉庫、線下門店的庫存。

通常,倉庫層透過倉庫管理系統(WMS)、門店POS系統或ERP系統管理倉庫庫存的進銷存,所有的庫存變動均透過出入庫單據完成。

倉庫層的核心概念模型為倉庫庫存,由一系列核心屬性描述:

  • 貨主:貨物所有權的擁有者,用於區分多貨主環境下的庫存歸屬。
  • 倉庫/門店:儲存貨物的邏輯單元,與物理倉庫不同,一個物理倉庫可能包含多個邏輯倉庫單元。
  • SKU:庫存管理的最小單位,標識具體的商品及其規格。
  • 批號:用於區分每一批投料生產的產品,便於質量追溯。例如,在醫藥行業中,批號能用於快速定位並召回特定批次的產品。
  • 生產日期:標記成品生產的日期和時間,常用於管理保質期商品的庫存。
  • 庫存狀態:描述庫存在不同業務場景下的狀態,例如:
    • 可用:可立即銷售的庫存。
    • 凍結:因質檢或特殊業務需要,暫不可用的庫存。
    • 在途:已從倉庫發貨,但尚未到達目的地的庫存。
    • 不良品/廢品:因質量問題,暫不具備使用價值的庫存。
  • 庫位:指倉庫中實際存放商品的具體位置,是庫存管理的最小粒度。

排程層

在庫存管理體系中,排程層是連線倉庫層與業務層的關鍵橋樑,負責彙總各倉庫和門店的庫存狀態,以支援全域性庫存的統一調配。

透過將排程層與倉庫層分離,企業能夠簡化對庫存細節的管理(如批號、庫位等),專注於全域性庫存的彙總與調配。

這種解耦的設計提高了庫存管理的靈活性和效率,特別適合全渠道業務場景中的動態庫存分配。排程層的核心概念模型為實物庫存,核心屬性包括:

  • 倉庫/門店:庫存所在的邏輯單元。
  • SKU:具體商品及其規格。
  • 庫存狀態:包括可用、不可用、在途等狀態,描述庫存在不同業務場景下的狀態。
  • 在途庫存:指供應商已發貨但尚未到庫的庫存。在一些場景中,為了避免缺貨,企業可能將這部分庫存計入可用實物庫存中。例如,在促銷期間,將部分在途庫存提前上架商城銷售,確保使用者下單時有足夠庫存。
  • 賬面實物庫存:門店/倉庫中實際存放的庫存,只要是未出庫的都算在賬面庫存中。
  • 不可用實物庫存:指因質量檢測、凍結或其他原因暫時不可銷售的庫存。例如,某批次商品因質檢未透過,被標記為不可用庫存。
  • 預佔實物庫存:訂單提交併分倉成功後,對應倉庫的庫存會被預佔,防止其他訂單重複佔用。訂單取消或發貨後,庫存狀態會相應調整。
  • 可用實物庫存:可用實物庫存是賬面實物庫存減去預佔實物庫存、不可用實物庫存的剩餘部分。可用實物庫存 = 賬面實物庫存 - 預佔實物庫存 - 不可用實物庫存。

銷售層

銷售層是三層庫存架構中的核心環節,負責管理各個銷售渠道的庫存分配與同步。透過精確的庫存計算和靈活的分配策略,為銷售渠道提供實時、可靠的庫存服務,防止超賣,保障庫存利用最大化。

1、銷售庫存的核心屬性

銷售層的核心概念模型為銷售庫存,包含以下核心屬性:

  • 銷售渠道:包括自營商城、門店線下渠道,以及第三方平臺(如天貓、京東、美團、餓了麼)等。
  • 銷售店鋪:指銷售的具體店鋪或門店。
  • 發貨方式:庫存支援的履約方式,如快遞、同城配送、自提等。
  • 配送區域:因倉庫覆蓋範圍不同,SKU支援的配送區域也有所限制。
  • 銷售可用庫存:按照倉庫/門店的供貨關係和渠道分配策略,計算出彙總的可銷售庫存數量。訂單支付成功後,會扣減銷售可用庫存。
  • 預售庫存:在商品未到貨時開啟預售模式,提前售賣的庫存。實物庫存與預售庫存是隔離開的,當實物到貨後,預售庫存統一轉化為實物庫存進行履約。
  • 預佔庫存:訂單已提交但未支付之前,為給顧客預留商品,會先預佔商品庫存,待支付以後再刪除預佔庫存,扣減可用庫存。若長時間未支付,則會取消訂單,釋放預佔庫存。
  • 活動庫存:針對某些SKU做促銷活動時,例如特價、秒殺活動,需要設定活動庫存,可以從正常庫存中預留部分庫存,活動開始後釋放預留庫存。
  • 可售庫存:可售庫存 = 預售庫存 + 銷售可用庫存 - 預佔庫存 - 活動庫存

2、活動庫存

在促銷活動中,如何高效管理活動庫存,避免庫存超賣或分配不足?活動庫存的處理是促銷活動能否順利進行的關鍵。以下是2種常見的處理方式:

1)共享庫存

共享庫存指活動庫存與普通商品庫存共用,無論透過活動售出還是普通售出,均從同一個庫存池中扣減。這種方式通常用於滿減、滿贈、滿折等促銷活動。

  • 優點:庫存管理簡單,適用於無需精確分配活動庫存的場景。
  • 缺點:在普通商品銷量過高時,可能影響活動商品的庫存供給。

2)獨佔庫存

獨佔庫存指活動庫存與普通商品庫存隔離。活動開始前,普通庫存會轉移一部分到活動庫存。活動結束後,未售完的活動庫存會返還普通庫存。這種方式常用於秒殺、特價活動。

  • 優點:精確控制活動庫存,避免活動庫存不足的情況出現。
  • 缺點:管理較複雜,活動前需轉換庫存,結束後需歸還庫存,需要額外邏輯支援。

庫存管理場景示例

本節將介紹幾個典型的庫存管理場景。這些場景涵蓋了多倉供貨、單倉給多店供貨、門店全渠道共享以及組合商品等常見業務模式。透過這些具體案例,可以更好地理解庫存模型的實際應用。

多倉供貨場景

多倉供貨指將多個實體倉庫或門店的庫存整合,統一供應線上渠道。這種模式透過整合庫存、就近發貨,提升配送效率、降低成本。

在本案例中,門店A和門店B被設定為天貓旗艦店的供貨來源。門店A擁有100件iPhone 14庫存,而門店B則持有50件iPhone 14庫存。透過庫存整合,兩家門店的庫存被彙總為線上可售庫存,總量為150件。

天貓旗艦店僅支援快遞配送,系統設定了快遞發貨的最大分配比例為80%。

根據這一規則,天貓渠道的最終庫存為:150件 × 80% = 120件。剩餘30件庫存被保留在門店,可以用於線下銷售或其他特殊場景。

單倉給多店供貨場景

單倉給多店供貨場景是指一個倉庫為多個銷售渠道提供庫存支援。

商家在電商平臺運營中,以一箇中央電商倉作為核心倉儲與配送中心,為多個線上店鋪提供庫存支援。

以電商倉儲備的100件iPhone 14為例,可採用按比例分配策略:假設京東渠道銷量較好,分配60%庫存;天貓渠道分配40%,各自獨立扣減。

這種策略的主要缺點是可能造成庫存浪費。由於難以精準預測各渠道的銷量,往往會出現某些渠道庫存過剩而其他渠道庫存不足的情況,導致錯失銷售機會,造成潛在損失。

另一種策略是庫存共享,即多個渠道共用同一庫存池。例如,100件iPhone 14在各渠道初始庫存均顯示為100件,當某一渠道售出後,系統自動同步更新所有渠道的庫存數量。

但這種方案也存在缺陷:由於多渠道庫存同步存在時間延遲,可能導致超賣問題。

為此,可以設定安全庫存作為緩衝。例如,實際庫存100件時,僅在各渠道上架90件,預留10件作為安全庫存。

在單倉給多店供貨場景中,商家需要在按比例分配、庫存共享兩種策略之間尋求平衡。透過引入安全庫存機制,既可以提高庫存利用率,又能有效防範同步延遲帶來的超賣風險。

門店全渠道庫存共享場景

在新零售模式下,如何實現線上線下渠道的深度融合,最大化門店庫存的利用率?門店全渠道庫存共享模式,透過整合線上線下的庫存資源,為企業提供了一盤貨的解決方案。

受益於微信生態和小程式電商的高速發展,越來越多的門店開始打造線上小程式。小程式可以理解為門店的“線上貨架”,透過小程式將門店商品展示給消費者。消費者無需到店即可瀏覽、下單,門店導購也可以透過小程式向會員推薦商品,實現高效轉化。

門店A持有 100 份草莓蛋糕,透過全渠道庫存共享模式,將庫存整合為“一盤貨”,同時在美團外賣、小程式、門店線下渠道進行售賣。

組合商品的庫存處理場景

在新零售業務中,組合商品是透過將多個單品捆綁為套餐形式銷售的一種方式,例如下午茶套餐、七夕美妝組合等。

這種商品形式能夠提升消費者的購買意願,但也對庫存管理提出了更高要求。

組合商品的庫存管理主要在排程層完成,排程層根據子商品的庫存數量和組合比例,計算組合商品的虛擬庫存。例如,商品A庫存為150件,商品B庫存為200件,組合關係為 1 件商品A + 2 件商品B。組合商品C的虛擬庫存計算為:MIN(150 / 1, 200 / 2) = 100 件。

當消費者下單購買組合商品C時,系統會根據組合商品的標識,鎖定1件商品A和2件商品B的庫存,防止其他訂單重複使用。訂單支付完成後,正式扣減子商品A和B的庫存數量。

本文已收錄於,我的技術網站:tangshiye.cn 裡面有,演算法Leetcode詳解,面試八股文、BAT面試真題、簡歷模版、架構設計,等經驗分享。

相關文章