Strutturare la disponibilità nei feed

Scegliere un formato di disponibilità

Esistono due modi per specificare i dati sulla disponibilità: (1) Posti disponibili o (2) Ritorna. Scegli un solo metodo da utilizzare per tutti i tuoi commercianti e servizi. Una volta selezionato un metodo, devi mantenerlo per tutta l'integrazione (feed, server di prenotazione e aggiornamenti in tempo reale).

Utilizza la seguente guida per determinare il formato della disponibilità più adatto:

  • Nel tuo sistema memorizzi la disponibilità come intervalli espliciti, ad esempio dalle 08:00 alle 08:30?
  • Nel tuo sistema memorizzi la disponibilità in un formato ricorrente, ovvero i commercianti offrono servizi con frequenza costante con poche deviazioni? Ad esempio, gli slot si ripetono ogni 15 minuti dalle 9:00 alle 17:00 e in ogni incremento di 15 minuti è disponibile un solo posto.
  • Per i servizi dei tuoi commercianti, può esserci più di un posto aperto alla volta? Ad esempio, 30 posti disponibili per un corso
  • Nessuna delle opzioni elencate si applica?
    • Utilizza Posti aperti
    • Nota: sebbene l'utilizzo della ricorrenza sia più efficiente e possa comportare dimensioni dei feed inferiori, se il tuo modello di dati non supporta la ricorrenza in modo nativo, non è consigliabile utilizzarla, in quanto dovrai ricalcolare la valore dell'intero giorno per ogni aggiornamento in tempo reale.

    Posti disponibili

    Definizioni dei parametri:

    • spots_open: il numero di spot attualmente disponibili per questa voce di disponibilità.
    • spots_total: il numero totale di spot di cui dispone il commerciante per questa configurazione, inclusi quelli non disponibili.

    Il metodo Spots Open indica esplicitamente la disponibilità di ogni spazio e supporta il modello di avere più spot per lo stesso servizio. Questi due parametri lavorano insieme per creare una rappresentazione digitale della capacità del servizio.

    Quando si verifica una prenotazione, il numero di spots_open deve diminuire di 1 tramite un aggiornamento in tempo reale (il numero di spots_total deve rimanere invariato). Una volta che spots_open = 0, lo slot non dovrebbe più essere visualizzato.

    Servizi di esempio

    Un corso di yoga o un salone di bellezza hanno i seguenti piani e non hanno prenotazioni attive

    Figura 1: pianta con prenotazioni attive

    Il feed della disponibilità per 2 slot presso questi commercianti sarà il seguente:

    JSON
        {
          "availability": [
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535817600, # Sept 1, 2018 4:00:00 PM GMT
                  "merchant_id": "1001"
                },
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535832000, # Sept 1, 2018 8:00:00 PM GMT
                  "merchant_id": "1001",
                }
              ]
        }
        

    Servizi di esempio con una prenotazione

    Figura 2: pianta con una prenotazione attiva

    Ora un utente prenota uno dei posti. Quando viene effettuata una prenotazione, viene emesso un aggiornamento in tempo reale per aggiornare la disponibilità. Nel prossimo feed giornaliero della disponibilità, questa prenotazione dovrebbe essere riportata. Nel feed della disponibilità per questi commercianti, il valore di spots_open verrà decrementato di 1 per lo slot del 1° settembre 2018 alle 16:00:00 GMT. L'ora 20:00:00 GMT del 1° settembre 2018 rimane invariata.

    Snippet del feed con una prenotazione

    JSON
        {
          "availability": [
                {
                  "spots_total": 6,
                  "spots_open": 5,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535817600, # Sept 1, 2018 4:00:00 PM GMT
                  "merchant_id": "1001"
                },
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535832000, # Sept 1, 2018 8:00:00 PM GMT
                  "merchant_id": "1001",
                }
              ]
    }
        

    Ricorrenza

    Definizioni dei parametri

    • recurrence: la rappresentazione di fasce orarie di disponibilità ripetute in modo coerente.
    • repeat_until_sec: il timestamp UTC dell'ora di fine dell'ultimo slot fino al quale si ripete la disponibilità.
    • repeat_every_sec: il numero di secondi tra gli intervalli di disponibilità successivi. Ad esempio, se repeat_every_sec = 1800 (30 minuti) e start_sec inizia alle 9:00, gli slot verranno ripetuti ogni 30 minuti alle 9:00, 9:30, 10:00 e così via.
      • Nota: non è necessario specificare spots_open e spots_total, poiché si presume che siano entrambi pari a 1, a meno che non sia presente una schedule_exception

    Il metodo di ricorrenza indica la disponibilità su base giornaliera per i servizi che si verificano a intervalli regolari, ad esempio un servizio che si verifica ogni 30 minuti dalle 9:00 alle 17:00 ogni giorno. Con la ricorrenza, specifichi la durata della fascia, la prima volta che si verifica nel giorno, la frequenza con cui deve ripetersi e quando deve smettere di ripetersi nello stesso giorno. Nota: è necessario specificare un nuovo insieme di slot ricorrenti per ogni giorno separatamente. Se uno slot è già prenotato nell'intervallo di tempo, devi specificare un'eccezione alla pianificazione. Ad esempio, ripeti ogni mezz'ora dalle 9:00 alle 21:00, tranne dalle 11:00 alle 11:30. Ogni singolo servizio avrà le proprie eccezioni di ripetizione e pianificazione.

    Servizi di esempio

    Un salone di bellezza ha la seguente pianta e non ha prenotazioni attive

    Figura 3: planimetrie senza prenotazioni attive. Si presume che sia disponibile un solo posto per servizio (ad es. Sally offre servizi di taglio di capelli ogni 30 minuti, ma può occuparsi di un solo cliente alla volta).

    Il feed della disponibilità per 1 spazio presso questi commercianti sarà il seguente:

    Snippet del feed:

    JSON
        {
        "availability": [
              {
                "merchant_id": "1001",
                "service_id": "1001",  # haircut
                "start_sec": 1493888400, # May 4, 2017 9:00:00 AM GMT
                "duration_sec": 1800,
                "recurrence": {
                  "repeat_every_sec": 1800,
                  "repeat_until_sec": 1493915400 # May 4, 2017 4:30:00 PM GMT
                }
              }
            ]
        }
        

    Servizi di esempio con una prenotazione

    Figura 4: planimetrie con una prenotazione attiva. Si presume che sia disponibile un solo posto per servizio (ad es. Sally offre servizi di taglio di capelli ogni 30 minuti, ma può occuparsi di un solo cliente alla volta).

    Ora immagina che un utente prenoti un taglio di capelli con Sally alle 12:30. Quando viene effettuata una prenotazione, viene emesso un aggiornamento in tempo reale per aggiornare la disponibilità. Nel prossimo feed giornaliero della disponibilità, questa prenotazione dovrebbe essere riportata. Il feed della disponibilità per questi commercianti presenterà un'eccezione di pianificazione dalle 12:30 alle 13:00 per un servizio con una durata di 30 minuti.

    Snippet del feed con una prenotazione:

    JSON
        {
          "availability": [
                {
                  "merchant_id": "1001",
                  "service_id": "1001",
                  "start_sec": 1493888400, # May 4, 2017 9:00:00 AM GMT
                  "duration_sec": 1800,
                  "recurrence": {
                    "repeat_every_sec": 1800,
                    "repeat_until_sec": 1493915400 # May 4, 2017 4:30:00 PM GMT
                  },
                  "schedule_exception": [
                    {
                      "time_range": {
                        "begin_sec": 1493901000, # May 4, 2017 12:30:00 PM GMT
                        "end_sec": 1493902800 # May 4, 2017 1:00:00 PM GMT
                      }
                    }
                  ],
                }
              ]
        }