Strutturazione dei dati sulla disponibilità per le prenotazioni

Definizioni dei parametri

Come specificato nella definizione di Availability:

  • party_size: il numero di persone che possono essere ospitate durante questo intervallo di tempo. Un ristorante può essere associato a più slot contemporaneamente, ognuno specificando un party_size diverso, se ad esempio 2, 3 o 4 persone possono prenotare un posto
  • spots_open: il numero di posti attualmente disponibili per questa voce relativa alla disponibilità
  • spots_total: il numero totale di spot a disposizione del commerciante per questa configurazione (inclusi quelli non disponibili)

Questi tre parametri interagiscono per creare una rappresentazione digitale della pianta del piano. party_size è il numero di persone che ogni tabella può contenere (ci sarà una voce per ogni dimensione che una tabella può contenere). spots_open e spots_total rappresentano il numero di tabelle che possono ospitare un dato (party_size).

Esempio di planimetria vuota

Immagina un ristorante con la seguente planimetria e nessuna prenotazione attiva:

Figura 1: planimetria senza prenotazioni attive
Figura 1: planimetria senza prenotazioni attive

I valori per party_size, spots_open e spots_total sono:

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

Il feed della disponibilità per una fascia oraria di questo commerciante avrebbe il seguente aspetto:

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
          }
        }
      ]
}

Esempio di planimetria con una prenotazione

Immaginiamo che una delle tavole rotonde sia già stata prenotata:

Figura 2: planimetria con una prenotazione attiva
Figura 2: planimetria con una prenotazione attiva

Ora i valori per party_size, spots_open e spots_total sarebbero:

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
          }
        }
      ]
}

Specificare la disponibilità di pasti con il supporto di tabelle combinate

Un ristorante può combinare i tavoli in molti modi per supportare gruppi più numerosi. Nei feed devi specificare spots_open e spots_total in un modo che rifletta accuratamente se puoi accettare parti di una determinata dimensione. Di seguito è riportato un esempio di come specificare combinazioni di tabelle. I feed potrebbero essere leggermente diversi per questo calcolo ed è accettabile che tu specifichi spots_open e spots_total in modo che rispecchino la tua logica di business.

Se un ristorante supporta la combinazione di tavoli per organizzare una festa con più partecipanti, puoi aggiornare spots_open e spots_total di conseguenza.

Supponiamo che un ristorante possa combinare due tavolini per ospitare un gruppo di 7-10 persone.

Figura 3: planimetria senza prenotazioni attive
Figura 3: planimetria senza prenotazioni attive

Nel caso di nessuna prenotazione attiva, i valori per party_size, spots_open e spots_total sono:

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

Ora, a parità di planimetria, viene effettuata una prenotazione per un gruppo di 10 persone che combina due tavolini.

Figura 4: planimetria con una prenotazione attiva su due tavoli
Figura 4: planimetria con una prenotazione attiva su due tavoli

Allora, i valori per party_size, spots_open e spots_total sono ora:

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