Utworzenie struktury dostępności w plikach danych

Wybór formatu dostępności

Dane o dostępności możesz określić na 2 sposoby: (1) Spots Open lub (2) powtarzanie. Wybierz tylko jedną metodę do stosowania u wszystkich sprzedawców i usług. Gdy wybierzesz metodę, musisz jej używać do całej integracji (plików danych, serwera rezerwacji i aktualizacji w czasie rzeczywistym).

Z tego przewodnika dowiesz się, który format dostępności jest dla Ciebie bardziej odpowiedni:

  • Czy w swoim systemie przechowujesz dostępność jako wyraźne terminy, np. 8:00–8:30?
  • Czy w swoim systemie przechowujesz informacje o dostępności w formacie cyklicznym, co oznacza, że sprzedawcy oferują usługi o stałej częstotliwości i niewielkiej liczbie odchyleń? Na przykład przedziały są powtarzane co 15 minut w godzinach 9:00–17:00. Co 15 minut jest dostępne tylko jedno miejsce.
  • Czy w przypadku usług Twoich sprzedawców może być więcej niż jedno otwarte miejsce naraz? Na przykład 30 otwartych miejsc na zajęcia
  • Nie dotyczy Cię żadna z powyższych sytuacji?
    • użyć Spotów otwartych.
    • Uwaga: korzystanie z powtarzania jest bardziej efektywne i może skutkować mniejszymi rozmiarami pliku danych, ale jeśli Twój model danych nie natywnie obsługuje powtarzania, nie zalecamy korzystania z powtarzania, ponieważ konieczne będzie ponowne obliczenie przedziałów cyklicznych dla każdej aktualizacji w czasie rzeczywistym.

    Spoty otwarte

    Definicje parametrów:

    • spot_open: liczba miejsc aktualnie dostępnych dla tego wpisu dostępności.
    • spot_total: łączna liczba miejsc, które sprzedawca ma na potrzeby tej konfiguracji, w tym miejsc, które są niedostępne.

    Metoda Otwórz spoty wyraźnie wskazuje każdą dostępność na przedziałach i obsługuje model z wieloma miejscami dla tej samej usługi. Te 2 parametry razem tworzą cyfrową reprezentację pojemności usługi.

    Podczas dokonywania rezerwacji liczba spot_open powinna się zmniejszyć o 1 przez aktualizację w czasie rzeczywistym (liczba spot_total powinna pozostać taka sama). Gdy spot_open = 0, boks nie powinien się już pojawić.

    Przykładowe usługi

    Zajęcia z jogi lub salon piękności mają poniższe plany pięter i nie są aktywne rezerwacje

    Ilustracja 1. Plan piętra bez aktywnych rezerwacji

    Plik danych o dostępności 2 przedziałów u tych sprzedawców będzie wyglądać 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ą

    Ilustracja 2. Plan piętra z 1 aktywną rezerwacją

    Teraz użytkownik zarezerwuje jedno z tych miejsc. W momencie rezerwacji dokonywana jest aktualizacja w czasie rzeczywistym, aby zaktualizować informacje o dostępności. W następnym pliku danych o dostępności codziennej ta rezerwacja powinna być widoczna. W przypadku tych sprzedawców plik danych o dostępności powinien zawierać wartość spot_open 1 września 2018 roku o 16:00:00 czasu GMT. Przedział 1 września 2018 roku o 20:00:00 czasu GMT pozostaje bez zmian.

    Fragment kodu 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: przedstawienie powtarzających się przedziałów dostępności.
    • powtórz_until_sec: sygnatura czasowa czasu UTC ostatniego czasu boksu, który jest powtarzany do końca dostępności.
    • powtórz_co_sekcja: liczba sekund między kolejnymi przedziałami dostępności. Jeśli na przykład powtórzenie_każdego_sekundy = 1800 (30 minut), a początek start_sec rozpocznie się o 9:00, przedziały będą powtarzane co 30 minut o 9:00, 9:30, 10:00 itd.
      • Uwaga: nie trzeba podawać parametrów spot_open i spot_total, ponieważ obie mają wartość 1, chyba że istnieje wyjątek harmonogramu_exception

    Metoda powtarzania pokazuje dostępność codziennie w przypadku usług, które mają miejsce w regularnych odstępach czasu, na przykład usługa świadczona co 30 minut od 9:00 do 17:00 każdego dnia. Dzięki powtarzaniu możesz określić czas trwania boksu, pierwszy dzień w boksie, jego częstotliwość i czas, w którym ma się zakończyć powtarzanie. Uwaga: należy określić nowy zestaw przedziałów cyklicznych dla każdego dnia oddzielnie. Jeśli przedział został już zarezerwowany w zakresie czasu, określisz wyjątek od harmonogramu. Na przykład powtórz tę czynność co pół godziny od 9:00 do 21:00, chyba że jest otwarta od 11:00 do 11:30. Każda usługa ma własne wyjątki dotyczące powtarzania i planowania.

    Przykładowe usługi

    W salonie kosmetycznym obowiązuje ten plan pięter oraz brak aktywnych rezerwacji

    Ilustracja 3. Plany pięter bez aktywnych rezerwacji Zajmuje tylko 1 miejsce otwarte na usługę (np. Sally zapewnia usługi strzyżenia co 30 minut, ale może uczestniczyć w spotkaniu tylko 1 klienta naraz).

    Plik danych o dostępności dla 1 boksu u tych sprzedawców będzie wyglądać tak:

    Fragment kodu z 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ą

    Ilustracja 4. Plany pięter z 1 aktywną rezerwacją. Zajmuje tylko 1 miejsce otwarte na usługę (np. Sally zapewnia usługi strzyżenia co 30 minut, ale może uczestniczyć w spotkaniu tylko 1 klienta naraz).

    Teraz wyobraź sobie, że użytkownik rezerwuje strzyżenie z Sylwą o 12:30. Podczas dokonywania rezerwacji przeprowadzana jest aktualizacja w czasie rzeczywistym, aby zaktualizować informacje o dostępności. W następnym pliku danych o dostępności codziennej ta zmiana powinna być widoczna. Plik danych o dostępności dla tych sprzedawców będzie miał wyjątek dla harmonogramu w godzinach 12:30–13:00 w przypadku usługi o czasie trwania 30 min.

    Fragment kodu 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
                      }
                    }
                  ],
                }
              ]
        }