사용 가능 여부 형식 선택
이용 가능 여부 데이터를 지정하는 방법에는 두 가지가 있습니다. (1) 이용 가능한 자리 또는 (2) 반복입니다. 모든 판매자와 서비스에서 사용할 메서드는 하나만 선택하세요. 한 가지 방법을 선택하면 전체 통합 (피드, 예약 서버, 실시간 업데이트)에 대해 이 방법을 사용해야 합니다.
다음 가이드를 사용하여 더 적합한 가용성 형식을 결정하세요.
- 시스템에서 가용성을 명시적인 슬롯(예: 오전 8시~오전 8시 30분)으로 저장하나요?
- Spots Open을 사용합니다.
- 시스템에서 이용 가능 여부를 반복 형식으로 저장하나요? 즉, 판매자가 거의 편차 없이 일정한 빈도로 서비스를 제공하나요? 예를 들어 슬롯은 오전 9시부터 오후 5시까지 15분마다 반복되며 15분 단위로 1개의 자리만 예약할 수 있습니다.
- 반복을 사용합니다.
- 판매자의 서비스에 한 번에 두 개 이상의 빈 자리가 있을 수 있나요? 예를 들어 수업에 30개의 빈 자리가 있습니다.
- Spots Open을 사용합니다.
- 위의 내용에 해당하지 않나요?
- Spots Open을 사용합니다.
- 참고: 반복을 사용하면 더 효율적이고 피드 크기가 줄어들 수 있지만 데이터 모델에서 기본적으로 반복을 지원하지 않는 경우 반복을 사용하지 않는 것이 좋습니다. 실시간 업데이트마다 하루 동안의 반복 슬롯을 모두 다시 계산해야 하기 때문입니다.
Spots Open
매개변수 정의:
- spots_open: 이 이용 가능 시간대 항목에 현재 이용 가능한 자리 수입니다.
- spots_total: 판매자가 이 구성에 대해 보유한 총 스팟 수입니다(사용할 수 없는 스팟 포함).
Spots Open 메서드는 모든 슬롯 가용성을 명시적으로 나타내며 동일한 서비스에 여러 개의 슬롯이 있는 모델을 지원합니다. 이 두 매개변수는 함께 작동하여 서비스 용량의 디지털 표현을 빌드합니다.
예약이 발생하면 실시간 업데이트를 통해 spots_open 수가 1씩 감소해야 합니다 (spots_total 수는 동일하게 유지됨). spots_open = 0이 되면 슬롯이 더 이상 표시되지 않습니다.
서비스 예
요가 수업 또는 미용실에 다음과 같은 평면도가 있고 활성 예약이 없는 경우
그림 1: 활성 예약이 없는 층별 평면도 이 판매자의 2개 시간대의 이용 가능 여부 피드는 다음과 같습니다.
{ "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) 시간대는 변경되지 않습니다.
예약이 포함된 피드 스니펫
{ "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개 시간대의 이용 가능 여부 피드는 다음과 같습니다.
피드 스니펫:
{ "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시 사이에 예약 예외가 있습니다.
예약이 포함된 피드 스니펫:
{ "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 } } ], } ] }