Definicje parametrów
Zgodnie z definicją Availability
:
party_size
: liczba osób, które mogą obsłużyć w tym czasie. Restauracja może być powiązana z wieloma przedziałami czasu, z których każdy może określać inną właściwośćparty_size
, np. dla 2, 3 lub 4 osób z rezerwacjąspots_open
: liczba miejsc obecnie dostępnych dla tego wpisu dostępnościspots_total
: łączna liczba miejsc, które sprzedawca ma w tej konfiguracji (w tym te, które są niedostępne).
Współdziałanie tych 3 parametrów powoduje utworzenie cyfrowej reprezentacji planu piętra. party_size
to liczba osób, które może pomieścić każda tabela (dla każdego rozmiaru tabeli dostępny jest wpis). spots_open
i spots_total
to liczba tabel, które mogą pomieścić ten party_size
.
Przykład pustego planu piętra
Wyobraź sobie restaurację o tym planie piętra i braku aktywnych rezerwacji:
![Rysunek 1. Plan piętra bez aktywnych rezerwacji](https://developers-dot-devsite-v2-prod.appspot.com/static/actions-center/images/tutorial_dining_flow_1.png?authuser=8&hl=pl)
Wartości party_size
, spots_open
i spots_total
powinny wyglądać tak:
party_size | spots_open | spots_total |
---|---|---|
4 | 3 | 3 |
5 | 3 | 3 |
6 | 4 | 4 |
7 | 1 | 1 |
8 | 1 | 1 |
Plik danych o dostępności dla jednorazowego przedziału czasu u tego sprzedawcy wyglądałby tak:
JSON
{ "availability": [ { "spots_total": 3, "spots_open": 3, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 4 } }, { "spots_total": 3, "spots_open": 3, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 5 } }, { "spots_total": 4, "spots_open": 4, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 6 } }, { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 7 } }, { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 8 } } ] }
Przykładowy plan piętra z rezerwacją
A teraz wyobraźmy sobie, że jeden z okrągłych stołów jest zarezerwowany:
![Rysunek 2. Plan piętra z jedną aktywną rezerwacją](https://developers-dot-devsite-v2-prod.appspot.com/static/actions-center/images/tutorial_dining_flow_2.png?authuser=8&hl=pl)
Wartości party_size
, spots_open
i spots_total
będą teraz wynosić:
party_size | spots_open | spots_total |
---|---|---|
4 | 2 | 3 |
5 | 2 | 3 |
6 | 3 | 4 |
7 | 1 | 1 |
8 | 1 | 1 |
JSON
{ "availability": [ { "spots_total": 3, "spots_open": 2, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 4 } }, { "spots_total": 3, "spots_open": 2, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 5 } }, { "spots_total": 4, "spots_open": 3, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 6 } }, { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 7 } }, { "spots_total": 1, "spots_open": 1, "duration_sec": 3600, "service_id": "1000", "start_sec": 1535806800, "merchant_id": "merch1", "resources": { "party_size": 8 } } ] }
Określanie dostępności posiłków za pomocą obsługi tabel łączonych
Jest wiele sposobów na to, aby restauracja mogła łączyć tabele w celu obsługi większych grup. Pliki danych powinny zawierać właściwości spots_open
i spots_total
w sposób, który dokładnie określa, czy do przyjęcia są firmy o określonej wielkości. Poniżej przedstawiamy przykład sposobu łączenia tabel.
Twoje pliki danych mogą nieco różnić się sposobem obliczania, dlatego możesz określać spots_open
i spots_total
w sposób zgodny z logiką biznesową.
Jeśli restauracja umożliwia łączenie tabel w celu utworzenia większej liczby uczestników, możesz odpowiednio zaktualizować spots_open
i spots_total
.
Załóżmy, że w restauracji można połączyć 2 małe stoły, aby pomieścić 7–10 osób.
![Rysunek 3. Plan piętra bez aktywnych rezerwacji](https://developers-dot-devsite-v2-prod.appspot.com/static/actions-center/images/tutorial_dining_flow_1.png?authuser=8&hl=pl)
W przypadku braku aktywnych rezerwacji wartości party_size
, spots_open
i spots_total
to:
party_size | spots_open | spots_total |
---|---|---|
4 | 3 | 3 |
5 | 3 | 3 |
6 | 4 | 4 |
7 | 1 | 1 |
8 | 1 | 1 |
9 | 1 | 1 |
10 | 1 | 1 |
Teraz, przy tym samym planie piętra, tworzona jest rezerwacja dla 10-osobowej grupy, która obejmuje 2 małe stoły.
![Rysunek 4. Plan piętra z jedną aktywną rezerwacją obejmującą 2 stoliki](https://developers-dot-devsite-v2-prod.appspot.com/static/actions-center/images/tutorial_dining_flow_3.png?authuser=8&hl=pl)
Zatem wartości dla party_size
, spots_open
i spots_total
wynoszą teraz:
party_size | spots_open | spots_total |
---|---|---|
4 | 1 | 3 |
5 | 1 | 3 |
6 | 2 | 4 |
7 | 1 | 1 |
8 | 1 | 1 |
9 | 0 | 1 |
10 | 0 | 1 |