Strutturare la disponibilità nei feed

Scelta del formato di disponibilità

Esistono due modi per specificare i dati sulla disponibilità: (1) Spot aperti o (2) ricorrenza. Scegli un solo metodo da utilizzare per tutti i tuoi commercianti e servizi. Dopo aver selezionato un metodo, devi seguirlo per l'intera integrazione (feed, server di prenotazione e aggiornamenti in tempo reale).

Utilizza la seguente guida per determinare quale formato di disponibilità è più adatto:

  • Nel tuo sistema, memorizzi la disponibilità come slot espliciti, ad esempio, dalle 8:00 alle 8:30?
  • Nel tuo sistema, archivi la disponibilità in un formato ricorrente, il che significa che i commercianti hanno servizi che si verificano con frequenza coerente con poche deviazioni? Ad esempio, gli slot si ripetono ogni 15 minuti dalle 9:00 alle 17:00 e sarà disponibile un solo posto per ogni incremento di 15 minuti.
  • Per i servizi dei tuoi commercianti, è possibile avere più di un punto aperto alla volta? Ad esempio, 30 posti disponibili per una classe.
  • Nessuno dei casi precedenti è applicabile?
    • Usa Spot aperti
    • Nota: anche se l'utilizzo della ricorrenza è più efficiente e può comportare dimensioni del feed più piccole, se il modello dei dati non supporta la ricorrenza in modo nativo, non è consigliabile utilizzare la ricorrenza, poiché dovrai ricalcolare l'intero giorno di slot ricorrenti per ogni aggiornamento in tempo reale.

    Spot aperti

    Definizioni dei parametri:

    • spot_open: il numero di spot attualmente disponibili per questa voce di disponibilità.
    • spot_total: il numero totale di spot disponibili per la configurazione, inclusi quelli non disponibili.

    Il metodo Spot Open indica esplicitamente la disponibilità di ogni slot e supporta il modello che prevede più spot per lo stesso servizio. Questi due parametri interagiscono per creare una rappresentazione digitale della capacità di servizio.

    Quando viene eseguita una prenotazione, il numero di spot_open deve diminuire di 1 tramite un aggiornamento in tempo reale (il numero di spot_totale deve rimanere invariato). Una volta spot_open = 0, l'area non dovrebbe più essere visualizzata.

    Servizi di esempio

    Una lezione di yoga o un salone di bellezza prevedono le seguenti planimetrie e non hanno prenotazioni attive

    Figura 1: pianta del piano senza prenotazioni attive

    Il feed di disponibilità per due slot presso questi commercianti avrebbe il seguente aspetto:

    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 una prenotazione viene effettuata, viene emesso un aggiornamento in tempo reale per aggiornare la disponibilità. Nel prossimo feed di disponibilità giornaliera, questa prenotazione dovrebbe essere visibile. Nel feed della disponibilità di questi commercianti spot_open è stato ridotto di 1 per l'area GMT del 1° settembre 2018 alle 16:00:00. Lo slot GMT del 1° settembre 2018 alle 20:00:00 rimane invariato.

    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

    • ricorrenza: la rappresentazione di slot di disponibilità con ripetizione regolare.
    • Ripeti_until_sec: il timestamp UTC dell'ora di fine dell'ultima area in cui la disponibilità si ripete.
    • Ripeti_ogni_sec: il numero di secondi tra gli slot di disponibilità successivi. Ad esempio, se ripetizione_ogni_sec = 1800 (30 minuti) e start_sec inizia alle 9:00, gli slot si ripeteranno ogni 30 minuti alle 9:00, 9:30, 10:00, ecc.
      • Nota: non è necessario specificare spot_open e spot_total. Si presume che siano entrambi pari a 1, a meno che non sia presente una schedule_exception.

    Il metodo di ricorrenza indica la disponibilità 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 dell'area annuncio, la prima volta in cui avviene l'operazione, la frequenza con cui l'area deve ripetersi e la stessa interruzione. Nota: è necessario specificare un nuovo insieme di slot ricorrenti per ciascun giorno separatamente. Se un'area annuncio è già prenotata nell'intervallo di tempo, specifica un'eccezione della 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 relative alla ricorrenza e alla programmazione.

    Servizi di esempio

    Un salone di bellezza dispone della seguente pianta e non ha prenotazioni attive

    Figura 3: planimetrie senza prenotazioni attive. Presume solo 1 posto aperto per servizio (ad es. Sally fornisce servizi di taglio di capelli ogni 30 minuti, ma può partecipare a un solo cliente alla volta).

    Il feed di disponibilità per 1 slot presso questi commercianti avrebbe il seguente aspetto:

    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. Presume solo 1 posto aperto per servizio (ad es. Sally fornisce servizi di taglio di capelli ogni 30 minuti, ma può partecipare a un solo cliente alla volta).

    Ora immagina che un utente prenoti un taglio di capelli con Sally alle 12:30. Quando una prenotazione viene effettuata, viene emesso un aggiornamento in tempo reale per aggiornare la disponibilità. Nel feed di disponibilità giornaliera successiva, questa prenotazione deve essere riportata. Il feed di disponibilità per questi commercianti avrà un'eccezione alla pianificazione dalle 12:30 alle 13:00 per un servizio della 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
                      }
                    }
                  ],
                }
              ]
        }