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ù fasce orarie per la stessa data, ciascuna con un party_size diverso, se ad esempio possono essere ospitate 2, 3 o 4 persone con una prenotazione
  • spots_open: il numero di posti attualmente disponibili per questa voce di disponibilità
  • spots_total: il numero totale di postazioni a disposizione del commerciante per questa configurazione (inclusi quelli non disponibili)

Questi tre parametri agiscono insieme per creare una rappresentazione digitale della pianta. party_size è il numero di persone che ogni tavolo può ospitare (esiste una voce per ogni dimensione che un tavolo può ospitare). spots_open e spots_total indicano il numero di tabelle che possono contenere party_size.

Esempio di planimetria vuota

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

Figura 1: pianta con prenotazioni non attive
Figura 1: pianta con prenotazioni attive

I valori di 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 di disponibilità per una fascia oraria presso questo commerciante sarà il seguente:

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

Ora immagina che una delle tavole rotonde sia stata prenotata:

Figura 2: pianta con una prenotazione attiva
Figura 2: pianta con una prenotazione attiva

I valori di party_size, spots_open e spots_total saranno ora:

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

Specifica della disponibilità dei pasti con il supporto delle tabelle combinate

Esistono molti modi in cui un ristorante può combinare i tavoli per supportare gruppi più numerosi. Nei tuoi feed devi specificare spots_open e spots_total in modo che riflettano con precisione se puoi accettare gruppi di una determinata dimensione. Di seguito è riportato un esempio di come specificare le tabelle da combinare. I tuoi feed potrebbero differire leggermente per quanto riguarda il modo in cui viene effettuato questo calcolo ed è accettabile specificare spots_open e spots_total in modo che sia in linea con la tua logica di business.

Se un ristorante supporta la combinazione di tavoli per formare un gruppo più grande, puoi aggiornare spots_open e spots_total in base a questa opzione.

Supponiamo che un ristorante possa unire due piccoli tavoli per ospitare un gruppo di 7-10 persone.

Figura 3: pianta con prenotazioni non attive
Figura 3: pianta con prenotazioni attive

In caso di nessuna prenotazione attiva, i valori di 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, con la stessa pianta, viene effettuata una prenotazione per un gruppo di 10 persone che combina due piccoli tavoli.

Figura 4: pianta con una prenotazione attiva che si estende su due tavoli
Figura 4: pianta con una prenotazione attiva che si estende su due tavoli

I valori di 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