シナリオ配送予定日キャッシュの使用

eCommerce プラットフォームのオーナーとしては、商品リストページ(PLP)のようなトラフィックの多いページでキャッシュされたEDDの結果を再利用することで、買い物客に迅速でシームレスな体験を保証したい。

配達予定日(EDD)キャッシュを使用する前に、キャッシュを有効にする必要があります。 詳しくは、「 配送予定日のキャッシュを設定する 」をご覧ください。

シナリオ1:キャッシュされたEDD結果をPLPで再利用する

このシナリオでは、米国の特定の郵便番号にいる顧客が、靴などの商品を検索するためにPLPを開く。 商品が選択されると、商品詳細ページ(PDP)が開き、 Get EDD APIを使用して、出荷または集荷配送方法に対するリアルタイムのEDD計算が開始されます。 EDDの結果はキャッシュに保存される。 その後、顧客がPLPリストを閲覧すると、 getCachedEDDs APIが靴のキャッシュ結果を取得するため、同じ結果が表示されます。 シューズのPLPリストに表示するEDDを再計算する必要がないため、時間を節約し、パフォーマンスを向上させることができる。

  1. Sterling Intelligent Promising でPDPのEDDを計算するには、 Get EDD APIを使用して以下の情報を提供する:
    
    {
        "customerType": "GOLD",
        "enterpriseCode": "ENT1",
        "shippingGroupId": "2DShipping",
        "destination": {
            "format": "ADDRESS",
            "value": {
                "countryCode": "US",
                "postalCode": "54321",
            }
        },
        "capacityUomToConsider": "UNITS",
        "itemInfo": {
            "itemId": "I1",
            "unitOfMeasure": "EACH",
            "productClass": "CLASS1"
        },
        "capacityCategoriesToConsider": {
            "categoryIds": ["cat1"]
        }
    }
    

    このAPIコールは配達日を計算し、キャッシュに保存する。

  2. PLPにキャッシュされた値を取得するには、 getCachedEDDs APIに同じアイテムと宛先情報を再度提供する:
    
        "destination": {
            "format": "ADDRESS",
            "value": {
                "countryCode": "US",
                "postalCode": "54321",
            }
        },
        "shippingGroupId": "2DShipping",
        "inputs": [
            {
                "inputId": "I1 input",
                "customerType": "GOLD",
                "enterpriseCode": "ENT1",
                "capacityUomToConsider": "UNITS",
                "itemInfo": {
                    "itemId": "I1",
                    "unitOfMeasure": "EACH",
                    "productClass": "CLASS1"
                },
                "capacityCategoriesToConsider": {
                    "categoryIds": ["cat1"]
                }
            }
        ]
    }
    
    注: 以前に計算された結果をキャッシュからフェッチするには、構造に若干の変更がある。 この構造変更により、1回のAPIコールで複数のアイテムに対応できるようになった。
  3. getCachedEDDs APIは、キャッシュされた結果を以下のように処理する:
    • キャッシュヒットの場合、一致するキャッシュエントリが存在すると、APIは新たな計算をトリガーすることなく、元のEDD計算のトリミングバージョンを返す。
    • キャッシュミスの場合、キャッシュされたエントリーが見つからなければ、APIは cacheMiss
      • すぐにリアルタイムで計算するわけではない。
      • その代わりに、入力を追跡し、提供された入力に対してEDDを計算する非同期バックエンドジョブをトリガーする。 詳しくは、この後のシナリオを参照のこと。
      • 今後、同じ入力で呼び出すと、新しくキャッシュされた結果が返される。

シナリオ2:非同期EDD計算によるキャッシュミスの処理

このシナリオでは、買い物客が2つの商品を含むPLPを見る:
  • 項目 I1: すでに計算され、キャッシュされている。
  • 項目 I2: キャッシュされたレコードが存在しません。
getCachedEDDs APIを両方のアイテムで呼び出すと、 Sterling Intelligent Promising はアイテム I1 のキャッシュヒットを返し、アイテム I2 のキャッシュミスを返す。 その後、アイテム I2 のEDDがバックグラウンドで非同期に計算され、将来のリクエストに利用できるようになる。
  1. getCachedEDDs APIへのリクエスト例を考えてみよう:
    
    
    {
      "destination": {
        "format": "ADDRESS",
        "value": {
          "countryCode": "US",
          "postalCode": "54321"
        }
      },
      "shippingGroupId": "2DShipping",
      "inputs": [
        {
          "inputId": "I1 input",
          "customerType": "GOLD",
          "enterpriseCode": "ENT1",
          "capacityUomToConsider": "UNITS",
          "itemInfo": {
            "itemId": "Shoes",
            "unitOfMeasure": "EACH",
            "productClass": "CLASS1"
          },
          "capacityCategoriesToConsider": {
            "categoryIds": ["cat1"]
          }
        },
        {
          "inputId": "I2 input",
          "enterpriseCode": "ENT1",
          "capacityUomToConsider": "UNITS",
          "itemInfo": {
            "itemId": "I2",
            "unitOfMeasure": "EACH",
            "productClass": "CLASS1"
          },
          "capacityCategoriesToConsider": {
            "categoryIds": ["cat1"]
          }
        }
      ]
    }
    
    キャッシュからEDDを取得するには、 getCachedEDDs APIを使用する。 要求された項目が以前に計算されていない場合、APIは cacheMiss を返し、 Sterling Intelligent Promising EDDを非同期で計算し、将来の使用のために結果をキャッシュする。
  2. 次のような応答が返される:
    {
      "outputs": [
        {
          "inputId": "I1 input",
          "cacheHit": [
            {
              "resultFound": true,
              "result": {
                "deliveryTime": "2025-09-09T02:30:00.000Z",
                "placeOrderBy": "2025-09-08T22:30:00.000Z"
              }
            }
          ]
        },
        {
          "inputId": "I2 input",
          "cacheMiss": true
        }
      ]
    }
    

項目 I1 に対しては以前のキャッシュ結果が返されるが、項目 I2 に対しては cacheMiss: true が返される。

さて、 Sterling Intelligent Promising は、バックエンドのジョブを使用して、アイテム I2 の EDD を非同期で事前計算し、最終的に getCachedEDDs API に同じ入力を返します:
{
    "outputs": [
        {
            "inputId": "I1 input",
            "cacheHit": [
                {
                    "resultFound": true,
                    "result": {
                        "deliveryTime": "2025-09-09T02:30:00.000Z",
                        "placeOrderBy": "2025-09-08T22:30:00.000Z"
                    }
                }
            ]
        },
        {
            "inputId": "I2 input",
            "cacheHit": [
                {
                    "resultFound": true,
                    "result": {
                        "deliveryTime": "2025-09-13T02:30:00.000Z",
                        "placeOrderBy": "2025-09-08T22:30:00.000Z"
                    }
                }
            ]
        }
    ]
}