在庫管理
在庫は多拠点で管理され、動的なしきい値ルール、販売速度と欠品予測、自動発注、入荷待ち(バックオーダー) まで一貫して扱えます。
多拠点在庫
inventory_levels/update Webhook で拠点別の在庫が /content/commerce/inventory/levels/{inventory_item_id}.json に記録されます(新しい値優先)。
{
"inventory_item_id": "123456",
"locations": { "loc_1": { "available": 15, "updatedAt": "..." } }
}
- 集計や拠点別内訳は
commerce.Locationsで取得 - 引当計画(
commerce.Allocation)はmost_stock/priority戦略に対応 - 設定:
/etc/commerce/config/locations.yml(strategy/priorityOrder/defaultSafetyStock) - 参照:
GET …/endpoints/inventory-locations.groovy?productId=123[&variantId=456&qty=10]
しきい値ルール
実効しきい値は次の優先順で決まります: 手動オーバーライド → ルール一致 → 既定値 → なし。
/etc/commerce/config/inventory-rules.yml:
default: 5
rules:
- name: "Perishable"
match: { productType: ["Food", "Beverage"] }
threshold: 20
- name: "High velocity"
match: { minVelocityPerDay: 5 }
threshold: 25
照合条件: productType / vendor / tags(いずれか一致)/ season(MM-DD 範囲、年跨ぎ可)/ minVelocityPerDay。上から評価し、全条件を満たす最初のルールが採用されます。
販売速度と欠品予測
タイマー(既定 6 時間ごと)で、注文履歴から変種ごとの速度(units/day)を計算し、/content/commerce/analytics/velocity.json にキャッシュします。
daysToStockout = current_stock / perDay
stockout.warnDays 以内に欠品が見込まれる変種をアラート(commerce.Alerts でクールダウン)。設定: /etc/commerce/config/velocity.yml(windowDays / stockout.warnDays / cooldownMinutes)。参照: GET …/endpoints/forecast.groovy?warnDays=7。
自動発注
タイマー(日次)で、速度と在庫から発注提案を作成します。
need = velocity * (leadTimeDays + targetCoverDays) - currentStock
qty = roundUp(max(ceil(need), minOrderQty), roundTo)
提案は /content/commerce/purchase-orders/{yyyy}/{MM}/po_*.json(review_pending)に記録され、承認の BPMN フローへ。承認後、supplier.delivery(none / email / webhook)に応じて発注します。設定: /etc/commerce/config/reorder.yml。ステータス: review_pending → approved/rejected → ordered/order_failed。
入荷待ち(バックオーダー)
注文時に、在庫不足(shortfall)または予約商品タグ(preorder)を検出して記録します。
backordered → ready → released (通常)
backordered → cancelled (返金時)
- 検出: 注文ルート内の
detectBackorders.groovy(order + lineキーで冪等) - 解放: 入荷時に古い順(FIFO)で在庫が足りる分だけ Release タスクを起票
- 取消: 返金時に当該注文の未解放分を取消
- 記録:
/content/commerce/backorders/{yyyy}/{MM}/backorder_{orderId}_{lineItemId}.json - 設定:
/etc/commerce/config/backorder.yml(preorderTags/notify.onCreated/notify.onReady)
アラートツールの流れ
商品 Webhook 受信 → 在庫アラートのワークフロー開始 → 初回はしきい値未設定なら「しきい値設定」タスク → 在庫 < しきい値で「在庫レビュー」タスク → 通知。同一商品でワークフローが実行中なら新規 Webhook はスキップされます。タスクは Webtop の Tasks アプリで処理します。