예약의 이용 가능 여부 데이터 구조화

매개변수 정의

Availability 정의에 지정된 대로

  • party_size: 이 시간대에 수용할 수 있는 인원수입니다. 예를 들어 2, 3 또는 4인석을 예약할 수 있는 음식점의 경우 각각 다른 party_size를 지정하여 동시에 여러 시간대에 연결할 수 있습니다.
  • spots_open: 이 이용 가능 여부 항목에 현재 사용 가능한 자리 수입니다.
  • spots_total: 판매자가 이 구성에 대해 보유한 총 스팟 수 (사용할 수 없는 스팟 포함)

이 세 가지 매개변수는 함께 작동하여 평면도의 디지털 표현을 만듭니다. party_size는 각 테이블에 수용할 수 있는 인원입니다 (테이블에 수용할 수 있는 모든 크기에 대한 항목이 있음). spots_openspots_total는 해당 party_size를 수용할 수 있는 테이블 수를 나타냅니다.

빈 평면도 예시

다음과 같은 평면도가 있고 활성 예약이 없는 레스토랑을 생각해 보세요.

그림 1: 활성 예약이 없는 객실 배치도
그림 1: 활성 예약이 없는 층별 평면도

party_size, spots_open, spots_total의 값은 다음과 같습니다.

party_size spots_open spots_total
4 3 3
5 3 3
6 4 4
7 1 1
8 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
          }
        }
      ]
}

예약이 포함된 평면도 예시

이제 원형 테이블 중 하나가 예약되었다고 가정해 보겠습니다.

그림 2: 활성 예약이 하나 있는 평면도
그림 2: 활성 예약이 하나 있는 층별 평면도

이제 party_size, spots_open, spots_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를 업데이트할 수 있습니다.

레스토랑에서 작은 테이블 두 개를 합쳐 7~10명이 앉을 수 있다고 가정해 보겠습니다.

그림 3: 활성 예약이 없는 객실 배치도
그림 3: 활성 예약이 없는 층별 평면도

활성 예약이 없는 경우 party_size, spots_open, spots_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: 두 테이블에 걸쳐 활성 예약이 하나 있는 평면도
그림 4: 2개의 테이블에 걸쳐 활성 예약이 하나 있는 층 평면도

그러면 party_size, spots_open, spots_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