Strukturyzowanie danych o dostępności w przypadku rezerwacji

Definicje parametrów

Zgodnie z definicją Availability:

  • party_size: liczba osób, które mogą uczestniczyć w danym wydarzeniu. Restauracja może być powiązana z wieloma slotami w tym samym czasie, przy czym każdy z nich określa inną wartość party_size, jeśli na przykład 2, 3 lub 4 osoby mogą zająć miejsca w ramach rezerwacji
  • spots_open: liczba miejsc obecnie dostępnych w przypadku tego wpisu z informacjami o dostępności
  • spots_total: łączna liczba miejsc, które sprzedawca ma w ramach tej konfiguracji (w tym te, które nie są dostępne)

Te 3 parametry współpracują ze sobą, aby utworzyć cyfrową reprezentację planu piętra. party_size to liczba osób, które mogą usiąść przy każdym stoliku (będzie wpis dla każdego rozmiaru stołu). spots_openspots_total to liczba tabel, w których można umieścić dane party_size.

Przykład pustego planu piętra

Wyobraź sobie restaurację z taką mapą piętra i bez aktywnych rezerwacji:

Rysunek 1. Plan piętra bez aktywnych rezerwacji
Ilustracja 1. Plan piętra bez aktywnych rezerwacji

Wartości party_size, spots_openspots_total będą następujące:

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 na jeden przedział czasowy u tego sprzedawcy będzie wyglądał 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ą

Teraz wyobraź sobie, że jedna z okrągłych ławek została zarezerwowana:

Rysunek 2. Plan piętra z jedną aktywną rezerwacją
Ilustracja 2. Plan piętra z jedną aktywną rezerwacją

Wartości parametrów party_size, spots_openspots_total będą teraz następujące:

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 z uwzględnieniem połączonych stolików

Restauracje mogą łączyć stoliki na wiele sposobów, aby obsługiwać większe grupy. W plikach danych musisz podać wartości spots_open i spots_total w sposób, który dokładnie odzwierciedla, czy możesz przyjmować partie o danym rozmiarze. Poniżej znajdziesz przykład określenia łączenia tabel. Sposób, w jaki są one obliczane, może się nieco różnić w przypadku poszczególnych plików danych. Możesz podać wartości spots_openspots_total w sposób odpowiadający logice Twojej firmy.

Jeśli restauracja umożliwia połączenie stolików, aby utworzyć większą grupę, możesz zaktualizować wartości pól spots_openspots_total, aby odzwierciedlić tę opcję.

Załóżmy, że restauracja może połączyć 2 małe stoły, aby pomieścić grupę 7–10 osób.

Rysunek 3. Plan piętra bez aktywnych rezerwacji
Ilustracja 3. Plan piętra bez aktywnych rezerwacji

W przypadku braku aktywnych rezerwacji wartości parametrów party_size, spots_open i spots_total wynoszą:

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 użyciu tego samego planu piętra, rezerwacja jest dokonywana dla grupy 10 osób, która łączy 2 małe stoły.

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

Wartości party_size, spots_openspots_total są teraz takie:

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