Wybieranie formatu dostępności
Dane o dostępności można określić na 2 sposoby: (1) Otwarte Spoty lub (2) Powtarzanie. Wybierz tylko jedną metodę, której chcesz używać we wszystkich swoich sprzedawcach i usługach. Po wybraniu metody musisz się jej trzymać przez całą integrację (pliki danych, serwer rezerwacji i aktualizacje w czasie rzeczywistym).
Ten przewodnik pomoże Ci określić, który format dostępności jest bardziej odpowiedni:
- Czy w systemie przechowujesz dostępność jako jawne przedziały czasu, np. 8:00–8:30?
- Użyj opcji Spots Open (Otwarte).
- Czy w systemie informacje o dostępności są przechowywane w formacie cyklicznym, co oznacza, że sprzedawcy mają usługi wykonywane ze stałą częstotliwością i z niewielkimi odchyleniami? Na przykład przedziały powtarzają się co 15 minut od 9:00 do 17:00 i w każdym co 15 minut ma miejsce tylko 1 miejsce.
- Używaj powtarzania
- Czy w przypadku usług Twoich sprzedawców w danym momencie może być więcej niż 1 wolne miejsce? np. 30 wolnych miejsc na zajęcia.
- Użyj opcji Spots Open (Otwarte).
- Żadna z powyższych sytuacji nie ma zastosowania?
- Użyj opcji Spots Open (Otwarte).
- Uwaga: chociaż powtarzanie jest skuteczniejsze i może prowadzić do zmniejszenia rozmiaru pliku danych, ale jeśli Twój model danych natywnie nie obsługuje powtarzania, nie zalecamy korzystania z powtarzania, ponieważ przy każdej aktualizacji w czasie rzeczywistym trzeba ponownie obliczać liczbę przedziałów cyklicznych z całego dnia.
Otwarte miejsca
Definicje parametrów:
- spot_open: liczba miejsc obecnie dostępnych dla tego wpisu dostępności.
- spot_total: łączna liczba miejsc, które sprzedawca ma w tej konfiguracji, w tym te, które są niedostępne.
Metoda Spots Open wyraźnie wskazuje dostępność każdego przedziału i obsługuje model posiadania wielu miejsc dla tej samej usługi. Te 2 parametry działają razem, tworząc cyfrową reprezentację wydajności usług.
Gdy następuje rezerwacja, liczba spot_open powinna zmniejszyć się o 1 w ramach aktualizacji w czasie rzeczywistym (liczba spotów_total powinna pozostać taka sama). Gdy miejsce spot_open ma wartość 0, boks nie powinien się już wyświetlać.
Przykładowe usługi
Zajęcia z jogi lub salon kosmetyczny mają poniższe plany pięter i nie są aktywne żadne rezerwacje
Plik danych dostępności dla dwóch przedziałów u tych sprzedawców wyglądałby tak:
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", } ] }
Przykładowe usługi z rezerwacją
Teraz użytkownik rezerwuje jedno z miejsc. W momencie rezerwacji wysyłana jest aktualizacja w czasie rzeczywistym, by zaktualizować dostępność. Ta rezerwacja powinna zostać uwzględniona w następnym pliku danych o dostępności. W przypadku tych sprzedawców wartość w pliku danych o dostępności zmieniłaby się na godzinę 16:00 GMT 1 września 2018 r. o godz. 16:00:00 czasu GMT. Przedział czasu GMT 1 września 2018 r. o 20:00:00 czasu GMT pozostaje bez zmian.
Fragment pliku danych z rezerwacją
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", } ] }
Powtarzanie
Definicje parametrów
- powtarzanie: reprezentacja stale powtarzanych przedziałów dostępności.
- multiple_until_sec: sygnatura czasowa UTC czasu zakończenia ostatniego przedziału, do którego dostępność powtarza się;
- Multiple_every_sec: liczba sekund między kolejnymi przedziałami dostępności. Na przykład: jeśli powtórzenie_każdego_sekundy = 1800 (30 minut), a element start_sec zaczyna się o 9:00, przedziały będą się powtarzać co 30 minut o 9:00, 9:30, 10:00 itd.
- Uwaga: nie musisz określać opcji spot_open i spot_total; obie te wartości mają wartość 1, chyba że występuje wyjątek „schedule_exception”
Metoda powtarzania wskazuje dzienną dostępność usług, które występują w regularnych odstępach czasu, na przykład usługi realizowanej co 30 minut w godzinach 9:00–17:00 każdego dnia. Powtarzanie pozwala określić czas trwania boksu, pierwsze wystąpienie boksu w dniu, jak często ma się on powtarzać i kiedy tego samego dnia powinien przestać się powtarzać. Uwaga: dla każdego dnia musisz określić nowy zestaw przedziałów cyklicznych. Jeśli przedział jest już zarezerwowany w danym przedziale czasu, określisz wyjątek od harmonogramu. Na przykład powtarzaj to co pół godziny od 9:00 do 21:00 z wyjątkiem 11:00–11:30. Każda usługa będzie miała własne wyjątki od harmonogramu i powtarzania.
Przykładowe usługi
Salon urody ma ten plan piętra i nie ma aktywnych rezerwacji
Plik danych dostępności dla 1 przedziału u tych sprzedawców mógłby wyglądać tak:
Fragment kanału:
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 } } ] }
Przykładowe usługi z rezerwacją
Teraz wyobraźmy sobie, że użytkownik rezerwuje fryzurę u Sylwii o 12:30. Gdy rezerwacja się odbywa, przeprowadzana jest aktualizacja w czasie rzeczywistym w celu zaktualizowania dostępności. Ta rezerwacja powinna zostać uwzględniona w następnym pliku danych o dostępności. W przypadku tych sprzedawców plik danych o dostępności w przypadku usługi o długości 30 minut może mieć wyjątek dotyczący harmonogramu w godzinach 12:30–13:00.
Fragment pliku danych z rezerwacją:
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 } } ], } ] }