Structurer la disponibilité dans les flux

Choisir un format de disponibilité

Il existe deux façons de spécifier les données de disponibilité: (1) Spots Open (Spots Open) ou (2) Recurrence. Choisissez une seule méthode à utiliser pour l'ensemble de vos marchands et services. Une fois que vous avez sélectionné une méthode, vous devez la suivre pour l'ensemble de l'intégration (flux, serveur de réservation et mises à jour en temps réel).

Consultez le guide suivant pour déterminer le format de disponibilité le plus adapté:

  • Dans votre système, stockez-vous la disponibilité en tant que créneaux explicites, par exemple de 8h à 8h30 ?
  • Dans votre système, stockez-vous la disponibilité dans un format récurrent, c'est-à-dire que les marchands proposent des services régulièrement et avec peu d'écarts ? Par exemple, les créneaux se répètent toutes les 15 minutes de 9h à 17h, et un seul siège est disponible par tranche de 15 minutes.
  • Existe-t-il plusieurs places disponibles à la fois pour les services proposés par vos marchands ? Par exemple, 30 places sont disponibles pour un cours.
  • Aucune des réponses ci-dessus ne correspond à votre situation ?
    • Utilisez Spots Open.
    • Remarque: Bien que l'utilisation de la récurrence soit plus efficace et qu'elle puisse réduire la taille des flux, si votre modèle de données n'est pas compatible de manière native avec la récurrence, il est déconseillé d'utiliser la récurrence, car vous devrez recalculer la totalité des emplacements récurrents pour chaque mise à jour en temps réel.

    Spots Open

    Définition des paramètres:

    • places_open: nombre de places actuellement disponibles pour cette entrée de disponibilité.
    • spot_total: nombre total de places disponibles dans le marchand pour cette configuration, y compris celles qui ne sont pas disponibles.

    La méthode "Spots Open" indique explicitement tous les emplacements disponibles et prend en charge le modèle consistant à avoir plusieurs emplacements pour le même service. Ces deux paramètres fonctionnent ensemble pour créer une représentation numérique de la capacité de service.

    Lors d'une réservation, le nombre de spots_open doit diminuer de 1 grâce à une mise à jour en temps réel (le nombre de spots_total ne devrait pas changer). Une fois que "spots_open" est défini sur 0, l'emplacement ne devrait plus s'afficher.

    Exemples de services

    Un cours de yoga ou un salon de beauté est associé aux plans d'étages suivants, et aucune réservation active

    Figure 1:Plan d'étage sans réservation active

    Le flux de disponibilité pour deux créneaux chez ces marchands se présente comme suit:

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

    Exemples de services avec réservation

    Figure 2:Plan d'étage avec une réservation active

    Maintenant, un utilisateur réserve l'un des emplacements. Lorsqu'une réservation est effectuée, une mise à jour en temps réel est envoyée pour actualiser la disponibilité. Cette réservation devrait être reflétée dans le prochain flux de disponibilité quotidienne. Dans le flux disponibilité pour ces marchands, "spots_open" serait diminué de 1 pour le créneau du 1er septembre 2018 à 16h GMT. Le créneau horaire du 1er septembre 2018 à 20h GMT reste inchangé.

    Extrait de flux avec réservation

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

    Récurrence

    Définition des paramètres

    • récurrence: représentation des créneaux de disponibilité qui se répètent de manière constante.
    • répéter_until_sec: horodatage UTC de l'heure de fin du dernier créneau jusqu'auquel la disponibilité se répète.
    • répéter_chaque_sec: nombre de secondes entre les créneaux de disponibilité successifs Par exemple, si "repeat_every_sec" est défini sur 1800 (30 minutes) et que "start_sec" commence à 9h00, les créneaux se répéteront toutes les 30 minutes à 9h, 9h30, 10h00, etc.
      • Remarque: Il n'est pas nécessaire de spécifier les valeurs "spots_open" et "spots_total", car la valeur est toutes les deux considérées comme étant égales à 1, sauf en cas de Schedule_exception.

    La méthode de récurrence indique la disponibilité quotidienne des services qui ont lieu à intervalles réguliers (par exemple, un service ayant lieu toutes les 30 minutes de 9h à 17h tous les jours). Avec la récurrence, vous spécifiez la durée du créneau, sa première occurrence dans la journée, sa fréquence de répétition et l'heure à laquelle il doit cesser de se répéter. Remarque: Un nouvel ensemble d'emplacements récurrents doit être spécifié séparément pour chaque jour. Si un créneau est déjà réservé au cours de la période, vous devez spécifier une exception de planification. Par exemple, répétez toutes les demi-heures de 9h à 21h, sauf de 11h à 11h30. Chaque service individuel aura ses propres exceptions de récurrence et de planification.

    Exemples de services

    Un salon de beauté a le plan d'étage suivant et aucune réservation active

    Figure 3:Plans d'étages sans réservation active Suppose qu'une seule place soit ouverte par service (par exemple, Sally propose des services de coiffure toutes les 30 minutes, mais ne peut assister qu'à un seul client à la fois).

    Le flux disponibilité pour un créneau chez ces marchands se présente comme suit:

    Extrait de flux:

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

    Exemples de services avec réservation

    Figure 4:Plans d'étages avec une réservation active Suppose qu'une seule place soit ouverte par service (par exemple, Sally propose des services de coiffure toutes les 30 minutes, mais ne peut assister qu'à un seul client à la fois).

    Imaginons maintenant qu'un utilisateur réserve une coupe de cheveux avec Sally à 12h30. Lorsqu'une réservation est effectuée, une mise à jour en temps réel est envoyée pour actualiser la disponibilité. Cette réservation devrait être reflétée dans le prochain flux de disponibilité quotidienne. Le flux disponibilité de ces marchands présenterait une exception de planification entre 12h30 et 13h pour un service d'une durée de 30 minutes.

    Extrait de flux avec réservation:

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