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

가용성 형식 선택

참석 여부 데이터를 지정하는 방법에는 (1) Spots Open 또는 (2) Recurrence의 두 가지가 있습니다. 모든 판매자 및 서비스에서 사용할 방법을 하나만 선택하세요. 방법을 선택한 후에는 전체 통합 (피드, 예약 서버, 실시간 업데이트)을 유지해야 합니다.

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

  • 시스템에서 명시적 슬롯(예: 오전 8:00~오전 8:30)으로 가용성을 저장하나요?
  • 시스템에서 재고를 반복 형식으로 저장하나요? 즉, 판매자가 일관된 편차로 서비스를 제공하면서도 편차가 거의 없습니다. 예를 들어 오전 9시부터 오후 5시까지 15분마다 슬롯이 반복되며 15분 단위로는 1개의 좌석만 사용할 수 있습니다.
  • 판매자 서비스의 경우 한 번에 2개 이상의 빈 공간을 가질 수 있나요? 예: 수업의 영업 담당 자리 30개
  • 해당 사항 없음
    • 스팟 열기 사용
    • 참고: 반복 사용은 좀 더 효율적이며 피드 크기가 더 작을 수 있지만 데이터 모델이 기본적으로 반복을 지원하지 않는 경우 실시간 업데이트를 할 때마다 하루 종일 반복되는 슬롯을 다시 계산해야 하기 때문에 반복을 사용하지 않는 것이 좋습니다.

    Spots Open

    매개변수 정의:

    • Spot_open: 이 이용 가능 여부 항목에 사용할 수 있는 스팟 수입니다.
    • Spot_total: 사용할 수 없는 위치를 포함하여 판매자가 이 구성에 대해 보유한 총 스팟 수입니다.

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

    예약이 발생하면 실시간 업데이트를 통해Spot_open 수가 1씩 감소해야 합니다 (Spot_total 수는 동일하게 유지되어야 함). Spot_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: 1개의 활성 예약이 있는 평면도

    이제 사용자가 해당 지점 중 하나를 예약합니다. 예약이 이루어지면 실시간 업데이트를 통해 참석 여부를 업데이트합니다. 다음 일일 가용성 피드에 이 예약이 반영됩니다. 이러한 판매자의 재고 피드에는 2018년 9월 1일 오후 4시(GMT) 시간대의Spot_open이 1씩 감소합니다. 2018년 9월 1일 오후 8:00:00 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",
                }
              ]
    }
        

    반복

    매개변수 정의

    • recurrency: 일관적으로 반복되는 가용성 슬롯을 나타냅니다.
    • 반복_가능_초: 마지막 슬롯의 종료 시간이 UTC 타임스탬프로 반복됩니다.
    • 반복_모든_초: 연속적인 가용성 슬롯 사이의 시간(초)입니다. 예를 들어 Repeat_every_sec = 1800 (30분)이고 start_sec가 오전 9시에 시작한다면 슬롯이 30분마다 9:00 AM, 9:30 AM, 10:00 AM 등에 반복됩니다.
      • 참고: Spot_open과Spot_total을 지정할 필요가 없습니다. schedule_exception이 없는 경우 둘 다 1로 간주합니다.

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

    예시 서비스

    미용실에서 다음과 같은 평면도를 사용하며 예약은 불가능합니다.

    그림 3: 진행 중인 예약이 없는 평면도 서비스당 스팟 1개만 열려있다고 가정합니다 (예: 샐리는 30분마다 헤어컷 서비스를 제공하지만 한 번에 고객 1명만 참석할 수 있음).

    이러한 판매자의 슬롯 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분마다 헤어컷 서비스를 제공하지만 한 번에 고객 1명만 참석할 수 있음).

    사용자가 오후 12시 30분에 Sally 헤어컷을 예약한다고 가정해 보겠습니다. 예약이 이루어지면 실시간 업데이트를 통해 참석 여부를 업데이트합니다. 다음 일일 가용성 피드에 이 예약이 반영됩니다. 이러한 판매자의 재고 피드에는 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
                      }
                    }
                  ],
                }
              ]
        }