予約の空き情報データの構造化

パラメータの定義

Availability の定義で指定されているとおり。

  • party_size: このタイムスロット中に対応できる人数。1 つのレストランで同じ時間に複数の Slot を関連付けることができます。たとえば、2 人、3 人、または 4 人を予約できる場合は、それぞれに異なる party_size を指定することが可能です。
  • spots_open: この空き状況エントリで現在利用可能なスポットの数
  • spots_total: この構成で販売者が利用できるスポットの合計数(利用できないスポットを含む)

これら 3 つのパラメータが連携して、フロアプランのデジタル表現を構築します。party_size は、各テーブルの収容人数です(テーブルの収容人数ごとにエントリがあります)。spots_openspots_total は、その party_size を格納できるテーブルの数です。

空の間取り図の例

次のフロアプランで、予約が 1 件もないレストランを想定します。

図 1: 予約が有効になっていないフロアプラン
図 1: 有効な予約がないフロアプラン

party_sizespots_openspots_total の値は次のようになります。

party_size spots_open spots_total
4 3 3
5 3 3
6 4 4
7 1 1
8 1 1

この販売者の 1 つの時間帯の空き状況フィードは次のようになります。

JSON

{
  "availability": [
        {
          "spots_total": 3,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 4
          }
        },
        {
          "spots_total": 3,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 5
          }
        },
        {
          "spots_total": 4,
          "spots_open": 4,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 6
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 7
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 8
          }
        }
      ]
}

予約を含むフロアプランの例

丸テーブルの 1 つが予約されたとします。

図 2: 1 件の有効な予約があるフロアプラン
図 2: 1 件の有効な予約があるフロアプラン

party_sizespots_openspots_total の値は次のようになります。

party_size spots_open spots_total
4 2 3
5 2 3
6 3 4
7 1 1
8 1 1

JSON

{
  "availability": [
        {
          "spots_total": 3,
          "spots_open": 2,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 4
          }
        },
        {
          "spots_total": 3,
          "spots_open": 2,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 5
          }
        },
        {
          "spots_total": 4,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 6
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 7
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 8
          }
        }
      ]
}

結合テーブルのサポートによる食事の空き状況の指定

レストランがテーブルを組み合わせて大人数のグループに対応する方法はたくさんあります。フィードでは、特定のサイズのグループを受け入れられるかどうかを正確に反映する形で spots_openspots_total を指定する必要があります。テーブルの結合を指定する方法の例を次に示します。フィードによってこの計算方法が多少異なる場合がありますが、ビジネス ロジックに合わせて spots_openspots_total を指定しても構いません。

レストランがテーブルを組み合わせて大人数のグループに対応している場合は、spots_openspots_total を更新して、この情報を反映させることができます。

たとえば、レストランで 2 つの小さなテーブルを組み合わせて 7 ~ 10 人のグループを座らせることができるとします。

図 3: アクティブな予約がないフロアプラン
図 3: 有効な予約がないフロアプラン

有効な予約がない場合、party_sizespots_openspots_total の値は次のようになります。

party_size spots_open spots_total
4 3 3
5 3 3
6 4 4
7 1 1
8 1 1
9 1 1
10 1 1

同じフロアプランで、2 つの小さなテーブルを組み合わせた 10 人のパーティーの予約が行われました。

図 4: 2 つのテーブルにまたがる 1 つのアクティブな予約があるフロアプラン
図 4: 2 つのテーブルにまたがる 1 つのアクティブな予約があるフロアプラン

この場合、party_sizespots_openspots_total の値は次のようになります。

party_size spots_open spots_total
4 1 3
5 1 3
6 2 4
7 1 1
8 1 1
9 0 1
10 0 1