피드의 이용 가능 여부 구조화

사용 가능 여부 형식 선택

이용 가능 여부 데이터를 지정하는 방법에는 두 가지가 있습니다. (1) 이용 가능한 자리 또는 (2) 반복입니다. 모든 판매자와 서비스에서 사용할 메서드는 하나만 선택하세요. 한 가지 방법을 선택하면 전체 통합 (피드, 예약 서버, 실시간 업데이트)에 대해 이 방법을 사용해야 합니다.

다음 가이드를 사용하여 더 적합한 가용성 형식을 결정하세요.

  • 시스템에서 가용성을 명시적인 슬롯(예: 오전 8시~오전 8시 30분)으로 저장하나요?
  • 시스템에서 이용 가능 여부를 반복 형식으로 저장하나요? 즉, 판매자가 거의 편차 없이 일정한 빈도로 서비스를 제공하나요? 예를 들어 슬롯은 오전 9시부터 오후 5시까지 15분마다 반복되며 15분 단위로 1개의 자리만 예약할 수 있습니다.
  • 판매자의 서비스에 한 번에 두 개 이상의 빈 자리가 있을 수 있나요? 예를 들어 수업에 30개의 빈 자리가 있습니다.
  • 위의 내용에 해당하지 않나요?
    • Spots Open을 사용합니다.
    • 참고: 반복을 사용하면 더 효율적이고 피드 크기가 줄어들 수 있지만 데이터 모델에서 기본적으로 반복을 지원하지 않는 경우 반복을 사용하지 않는 것이 좋습니다. 실시간 업데이트마다 하루 동안의 반복 슬롯을 모두 다시 계산해야 하기 때문입니다.

    Spots Open

    매개변수 정의:

    • spots_open: 이 이용 가능 시간대 항목에 현재 이용 가능한 자리 수입니다.
    • spots_total: 판매자가 이 구성에 대해 보유한 총 스팟 수입니다(사용할 수 없는 스팟 포함).

    Spots Open 메서드는 모든 슬롯 가용성을 명시적으로 나타내며 동일한 서비스에 여러 개의 슬롯이 있는 모델을 지원합니다. 이 두 매개변수는 함께 작동하여 서비스 용량의 디지털 표현을 빌드합니다.

    예약이 발생하면 실시간 업데이트를 통해 spots_open 수가 1씩 감소해야 합니다 (spots_total 수는 동일하게 유지됨). spots_open = 0이 되면 슬롯이 더 이상 표시되지 않습니다.

    서비스 예

    요가 수업 또는 미용실에 다음과 같은 평면도가 있고 활성 예약이 없는 경우

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

    이 판매자의 2개 시간대의 이용 가능 여부 피드는 다음과 같습니다.

    JSON
        {
          "availability": [
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535817600, # Sept 1, 2018 4:00:00 PM GMT
                  "merchant_id": "1001"
                },
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535832000, # Sept 1, 2018 8:00:00 PM GMT
                  "merchant_id": "1001",
                }
              ]
        }
        

    예약이 있는 서비스 예

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

    이제 사용자가 장소 중 하나를 예약합니다. 예약이 이루어지면 실시간 업데이트가 실행되어 이용 가능 여부가 업데이트됩니다. 다음 일일 예약 가능 여부 피드에 이 예약이 반영됩니다. 이러한 판매자의 이용 가능 여부 피드에서는 2018년 9월 1일 오후 4시(GMT) 슬롯의 spots_open이 1씩 감소합니다. 2018년 9월 1일 오후 8시(GMT) 시간대는 변경되지 않습니다.

    예약이 포함된 피드 스니펫

    JSON
        {
          "availability": [
                {
                  "spots_total": 6,
                  "spots_open": 5,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535817600, # Sept 1, 2018 4:00:00 PM GMT
                  "merchant_id": "1001"
                },
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535832000, # Sept 1, 2018 8:00:00 PM GMT
                  "merchant_id": "1001",
                }
              ]
    }
        

    반복

    매개변수 정의

    • 반복: 지속적으로 반복되는 이용 가능 시간대를 나타냅니다.
    • repeat_until_sec: 이용 가능 시간대가 반복될 때까지의 마지막 시간대의 종료 시간 UTC 타임스탬프입니다.
    • repeat_every_sec: 연속된 이용 가능 시간대 사이의 시간(초)입니다. 예를 들어 repeat_every_sec = 1800 (30분)이고 start_sec가 오전 9시에 시작하면 30분마다 오전 9시, 오전 9시 30분, 오전 10시 등 시간대가 반복됩니다.
      • 참고: spots_open 및 spots_total을 지정할 필요가 없습니다. schedule_exception이 없는 한 둘 다 1로 간주됩니다.

    반복 방법은 정기적으로 발생하는 서비스의 일일 이용 가능 여부를 나타냅니다(예: 매일 오전 9시부터 오후 5시까지 30분마다 발생하는 서비스). 반복을 사용하면 시간대의 기간, 하루 중 시간대가 처음 발생하는 시간, 시간대가 반복되는 빈도, 같은 날 반복이 중지되는 시간을 지정할 수 있습니다. 참고: 매일 반복되는 슬롯 세트를 별도로 지정해야 합니다. 기간 내에 이미 슬롯이 예약된 경우 일정 예외를 지정합니다. 예를 들어 오전 9시부터 오후 9시까지 30분마다 반복하고 오전 11시부터 오전 11시 30분은 제외합니다. 각 개별 서비스에는 고유한 반복 및 예약 예외가 있습니다.

    서비스 예

    미용실에 다음과 같은 평면도가 있고 활성 예약이 없습니다.

    그림 3: 활성 예약이 없는 층별 평면도 서비스당 1개의 자리만 열려 있다고 가정합니다 (예: 샐리님은 30분마다 머리카락 자르기 서비스를 제공하지만 한 번에 한 명의 고객만 응대할 수 있음).

    이러한 판매자의 1개 시간대의 이용 가능 여부 피드는 다음과 같습니다.

    피드 스니펫:

    JSON
        {
        "availability": [
              {
                "merchant_id": "1001",
                "service_id": "1001",  # haircut
                "start_sec": 1493888400, # May 4, 2017 9:00:00 AM GMT
                "duration_sec": 1800,
                "recurrence": {
                  "repeat_every_sec": 1800,
                  "repeat_until_sec": 1493915400 # May 4, 2017 4:30:00 PM GMT
                }
              }
            ]
        }
        

    예약이 있는 서비스 예

    그림 4: 활성 예약이 하나 있는 층별 평면도 서비스당 1개의 자리만 열려 있다고 가정합니다 (예: 샐리님은 30분마다 머리카락 자르기 서비스를 제공하지만 한 번에 한 명의 고객만 응대할 수 있음).

    사용자가 오후 12시 30분에 샐리에게 머리를 깎으려고 예약했다고 가정해 보겠습니다. 예약이 이루어지면 실시간 업데이트가 실행되어 이용 가능 여부가 업데이트됩니다. 다음 일일 예약 가능 여부 피드에 이 예약이 반영됩니다. 이러한 판매자의 이용 가능 여부 피드에는 30분 길이의 서비스의 경우 오후 12시 30분~오후 1시 사이에 예약 예외가 있습니다.

    예약이 포함된 피드 스니펫:

    JSON
        {
          "availability": [
                {
                  "merchant_id": "1001",
                  "service_id": "1001",
                  "start_sec": 1493888400, # May 4, 2017 9:00:00 AM GMT
                  "duration_sec": 1800,
                  "recurrence": {
                    "repeat_every_sec": 1800,
                    "repeat_until_sec": 1493915400 # May 4, 2017 4:30:00 PM GMT
                  },
                  "schedule_exception": [
                    {
                      "time_range": {
                        "begin_sec": 1493901000, # May 4, 2017 12:30:00 PM GMT
                        "end_sec": 1493902800 # May 4, 2017 1:00:00 PM GMT
                      }
                    }
                  ],
                }
              ]
        }