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

이용 가능 여부 형식 선택

가용성 데이터를 지정하는 두 가지 방법은 (1) Spots Open(Spot 열기) 또는 (2) Recurrence(반복)입니다. 모든 판매자와 서비스에서 사용할 방법을 하나만 선택하세요. 방법을 선택한 후에는 전체 통합 (피드, 예약 서버, 실시간 업데이트)에 해당 방법을 계속 사용해야 합니다.

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

  • 시스템에서 예약 가능 여부를 명시적 시간대로 저장하나요(예: 오전 8:00~오전 8:30)?
  • 시스템에서 재고를 반복 형식으로 저장하나요? 즉, 판매자가 일정 빈도의 편차 없이 발생하는 서비스를 보유하고 있나요? 예를 들어 슬롯이 오전 9시부터 오후 5시까지 15분마다 반복되며 15분 단위로 좌석 1개만 제공됩니다.
  • 판매자 서비스의 경우 열린 자리가 한 번에 2개 이상 있을 수 있나요? 예를 들어 한 수업의 빈 자리는 30개입니다.
  • 위 내용 중 어느 것도 해당되지 않나요?
    • Spots Open을 사용합니다.
    • 참고: 반복을 사용하면 효율적이고 피드 크기가 작아질 수 있지만 데이터 모델이 기본적으로 반복을 지원하지 않는 경우 모든 실시간 업데이트에 대한 하루 전체의 반복 슬롯을 다시 계산해야 하므로 반복을 사용하지 않는 것이 좋습니다.

    Spots Open

    매개변수 정의:

    • spot_open: 이 이용 가능 여부 항목에 현재 이용 가능한 자리 수입니다.
    • spot_total: 사용할 수 없는 스팟을 포함하여 이 구성에서 판매자가 보유한 총 스팟 수입니다.

    Spots Open 메서드는 모든 시간대의 이용 가능 여부를 명시적으로 나타내며 동일한 서비스에 대해 여러 스팟을 보유하는 모델을 지원합니다. 이 두 매개변수가 함께 작동하여 서비스 용량을 디지털 방식으로 표현합니다.

    예약이 발생하면 spot_open 수는 실시간 업데이트를 통해 1씩 감소해야 합니다 (Spot_total 수는 동일하게 유지되어야 함). ss_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:00:00(GMT) 시간대의 spot_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",
                }
              ]
    }
        

    반복

    매개변수 정의

    • recurrence: 지속적으로 반복되는 이용 가능 시간대를 나타냅니다.
    • repeat_until_sec: 이용 가능 시간이 반복되는 마지막 시간대의 종료 시간의 UTC 타임스탬프입니다.
    • repeat_every_sec: 연속적인 이용 가능 시간대 사이의 시간(초)입니다. 예를 들어 repeat_every_sec = 1800 (30분)이고 start_sec가 오전 9:00에 시작하는 경우 슬롯은 30분마다 오전 9:00, 오전 9:30, 오전 10:00 등에 반복됩니다.
      • 참고: 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분에 현수와 커트를 예약한다고 가정해 보겠습니다. 예약이 이루어지면 이용 가능 여부를 업데이트하기 위해 실시간 업데이트가 실행됩니다. 다음 일일 이용 가능 여부 피드에 이 예약이 반영됩니다. 기간이 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
                      }
                    }
                  ],
                }
              ]
        }