軟體工程師的小事:到底要不要 Close

使用 rowversion 來判斷要更新庫存的商品 | 2019 鐵人賽

說明前先描述環境

  • ERP 系統
  • 門市
  • 電子商務網站
  • 第三方電子商務網站 A
  • 第三方電子商務網站 B

第三方電子商務網站 A,B 的庫存更新由 API 串接執行

庫存皆已 ERP 系統之庫存量為準 且是共用倉庫

門市會在消費者結帳後將庫存進行扣除 但電子商務網站與第三方電子商網站的庫存 會等到訂單進入 ERP 系統後才進行扣除

問題

該如何設計第三方平台庫存更新的架構減少超賣情況

一段時間進行全部商品庫存更新/與 ERP 相符

假設 A 商品在 ERP 庫存量是 16 個 若 A 商品在「第三方平台」已經被下訂 6 個 A 商品的庫存在「第三方平台」就會 10 個

但訂單因為還沒建立到 ERP 故進行商品同步時

「第三方平台」的數量就會被補齊上 6 個與 ERP 庫存相符

在「第三方平台」埋程式碼當消費者點選時進行庫存更新作業

此方法會遇到與上述方法相同的問題 尚未匯入的訂單購買的商品還是會被補庫存

只是變成不會一次所有庫存都進行更新

僅更新 ERP 庫存量有異動的商品

庫存資料表中建立 rowversion 欄位 並依照不同平台儲存最新存取版本的 rowversion

取得要更新版本的庫存清單後 再更新到第三方平台

這樣需要更新庫存的時間點就變成

  • 匯入第三方平台訂單
  • 門市販售商品
  • 商品進貨

當第三方平台建立訂單 在訂單尚未匯入 ERP 前 第三方平台的庫存會維持在扣除訂購數量的情況

直到第三方平台訂單匯入 ERP 系統

結論

此情境的最佳解還是在 依不同賣場進行倉庫區分作業

留言