概要
MintJams Commerce は、MintJams CMS(JCR)を実行基盤とするヘッドレスコマースです。Shopify と双方向に連携し、イベント駆動で注文・返金・在庫・商品を処理します。処理は Camel の EIP ルート、Groovy エンドポイント、BPMN ワークフローで構成されます。
連携モデル
- 受信(Shopify → CMS): Webhook を HMAC 検証して取り込み、トピックごとに専用ワークフロー(
orders/paid、products/create、refunds/create、inventory_levels/updateなど)へ、その他は汎用エンティティとして正規化 - 送信(CMS → Shopify): Admin API で在庫・価格・公開・メタフィールドを書き戻し(
adminApi.enabledで制御) - Webhook 受信口:
/content/public/commerce/endpoints/shopify/webhook.groovy(公開・HMAC 検証)
データの流れ
Shopify イベント → Webhook(HMAC 検証)
→ direct:commerce-ingest(イベントログに記録)
→ トピック別ルート または 汎用エンティティへ正規化
→ /content/commerce/... に保存
→ ルール適用(しきい値・レビュー・入荷待ち検出 など)
→ タスク/通知 または バッチ → 投影・キャッシュ
→ 送信(sync.groovy → Shopify Admin API)
→ 監査証跡 /content/commerce/sync/
データの置き場所(抜粋)
| パス | 内容 |
|---|---|
/content/commerce/orders/raw/{yyyy}/{MM}/order_{id}.json |
受信した注文 |
/content/commerce/refunds/raw/{yyyy}/{MM}/refund_{id}.json |
受信した返金 |
/content/commerce/products/product_{id}.json |
商品ミラー+メタデータ+PIM オーバーレイ |
/content/commerce/inventory/levels/{inventory_item_id}.json |
拠点別在庫 |
/content/commerce/events/{source}/{yyyy}/{MM}/{eventId}.json |
イベントログ |
/content/commerce/entities/{source}/{collection}/{id}.json |
正規化エンティティ |
/content/commerce/sync/{yyyy}/{MM}/sync_{epochMs}.json |
送信監査証跡 |
/etc/commerce/config/*.yml |
各機能の設定 |
ステータス
コンテンツには 2 つの軸のステータスが付きます。
commerce:status— 取り込み処理のライフサイクル(例:received/review_pending/approved/fulfilled/resolved/error)commerce:source_status— Shopify 側の業務ステータスのミラー(商品:active/archived/draft、注文:financial_status+partially_refunded/refunded)
主な機能領域
- カタログ・PIM — 商品ミラーと CMS 主導のオーバーレイ(多言語・カスタム属性・メタフィールド)
- 在庫 — 多拠点・動的しきい値・販売速度・欠品予測・自動発注・入荷待ち
- 注文・返金 — 受信、スクリーニング/レビュー、フルフィルメント、返金記録、書き戻し
- Storefront — ヘッドレスのカタログ公開と編集可能なランディングページ
- 運用ツール — ダッシュボード、ヘルスモニター、通知、突合、レポート、タスク SLA、CRM
- データ連携・取り込み — イベント取り込み・再実行、双方向同期
管理エンドポイント(認証あり・抜粋)
health.groovy / tasks.groovy / forecast.groovy / events.groovy / sync.groovy / pim.groovy / reconcile.groovy / reports.groovy / crm.groovy / dashboard.groovy(いずれも /content/commerce/endpoints/ 配下、/bin/cms.cgi/<workspace>/... で呼び出し)。