Struktura danych o dostępności w przypadku rezerwacji

Aby miejsca były prawidłowo wyświetlane w procesie rezerwacji, musisz przesłać dokładne i aktualne mapowanie asortymentu. Liczba dostępnych miejsc może się znacznie zmienić po dokonaniu rezerwacji, ponieważ w restauracjach można łączyć stoliki, a liczba osób w grupie może się różnić. Przykłady w tym dokumencie pomogą Ci prawidłowo zarządzać dostępnymi zasobami reklamowymi i przypisywać je do odpowiednich kategorii.

Poniżej znajdziesz parametry określone w Availability definition:

  • party_size: liczba osób, które firma może przyjąć w tym momencie. Diagramy w tym artykule pokazują różne sposoby konfigurowania wielkości grupy.
  • spots_open: liczba stolików dostępnych obecnie w określonym przedziale czasowym i dla określonej liczby osób.
  • spots_total: łączna liczba stolików, które sprzedawca ma w tej konfiguracji, w tym stoliki niedostępne.

Te 3 parametry współpracują ze sobą, aby utworzyć cyfrową reprezentację planu piętra. party_size to liczba osób, które mogą siedzieć przy każdym stoliku. Każdy rozmiar, który może pomieścić stół, ma swój wpis. spots_openspots_total to liczby stolików, które mogą pomieścić party_size.

Przykład pustego planu piętra

Wyobraź sobie restaurację o takim planie i bez aktywnych rezerwacji:

Rysunek 1. Plan piętra bez aktywnych rezerwacji

Rysunek 1. Plan piętra bez aktywnych rezerwacji.

Wartości party_size, spots_openspots_total to:

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 jednego przedziału czasowego u tego sprzedawcy wygląda tak:

{
  "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ład planu piętra z rezerwacją

Restauracja, w której jeden z okrągłych stolików został wcześniej zarezerwowany:

Rysunek 1. Plan piętra z 1 aktywną rezerwacją

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

Wartości party_size, spots_openspots_total to:

party_size spots_open spots_total
4 2 3
5 2 3
6 3 4
7 1 1
8 1 1

Plik danych o dostępności dla jednego przedziału czasowego u tego sprzedawcy wygląda tak:

{
  "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 miejsc w restauracji z obsługą połączonych stolików

Restauracja może połączyć stoliki na wiele sposobów, aby pomieścić większe grupy. Musisz określić spots_openspots_total w sposób, który dokładnie odzwierciedla, czy możesz przyjąć grupy o danym rozmiarze.

Poniżej znajdziesz przykład, jak określić łączenie tabel. Pliki danych mogą się różnić w zależności od używanej metody obliczania. Możesz określić spots_openspots_total w sposób zgodny z logiką Twojej firmy.

Jeśli restauracja umożliwia łączenie stolików w większe grupy, możesz zaktualizować wartości spots_openspots_total, aby to odzwierciedlić.

Na przykład restauracja, która może połączyć 2 małe stoliki, aby pomieścić grupę 7–10 osób:

Rysunek 1. Plan piętra bez aktywnych rezerwacji

Rysunek 3. Plan piętra bez aktywnych rezerwacji.

Jeśli nie ma aktywnych rezerwacji, wartości party_size, spots_openspots_total są następujące:

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 lokalu, rezerwacja jest dokonywana dla grupy 10 osób, która łączy dwa małe stoliki.

Rysunek 1. Plan piętra z 1 aktywną rezerwacją obejmującą 2 stoły

Rysunek 4. Plan piętra z jedną aktywną rezerwacją obejmującą 2 stoliki.

Wartości party_size, spots_openspots_total są wtedy następujące:

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