Estructura los datos de disponibilidad para reservas

Definiciones de los parámetros

Como se especifica en el Availability definición:

  • party_size: Cantidad de personas que pueden acomodarse durante este período ranura. Un restaurante se puede asociar con varios horarios disponibles al mismo tiempo. cada una especifica un party_size diferente, si, por ejemplo, 2, 3 o 4 personas puede sentarse con una reserva
  • spots_open: Es la cantidad de cupos disponibles actualmente para esto. entrada de disponibilidad
  • spots_total: Es la cantidad total de lugares que tiene el comercio para este elemento. configuración (incluidas las que no están disponibles)

Estos tres parámetros trabajan juntos para crear una representación digital del plano del edificio. party_size es la cantidad de personas que puede contener cada tabla (existe puede ser una entrada para cada tamaño que sea compatible con una tabla). spots_open y spots_total son recuentos de la cantidad de tablas que pueden admitir ese party_size.

Ejemplo de plano del edificio vacío

Imagina un restaurante con el siguiente plano de planta y sin actividad reservas:

Figura 1: Plano de edificio sin reservas activas
Figura 1: Plano de edificio sin reservas activas

Los valores para party_size, spots_open y spots_total serían los siguientes:

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

El feed de disponibilidad para un horario disponible de este comercio debería verse así:

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

Ejemplo de plano del edificio con una reserva

Ahora imagina que se reservó una de las mesas redondas:

Figura 2: Plano de edificio con una reserva activa
Figura 2: Plano de planta con uno reserva activa

Ahora, los valores para party_size, spots_open y spots_total serían los siguientes:

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

Especificación de la disponibilidad de restaurantes con compatibilidad para mesas combinadas

Hay muchas formas en que un restaurante puede combinar mesas para sostener mesas más grandes grupos. Se espera que en tus feeds se especifiquen spots_open y spots_total. de una manera que refleje con precisión si puedes aceptar partes de un determinado de tamaño del ensamble. A continuación, se muestra un ejemplo de cómo puedes especificar tablas combinadas. Sus feeds pueden variar un poco en la forma en que se realiza este cálculo y se es aceptable que especifiques spots_open y spots_total de una manera que coincidan con tu lógica empresarial.

Si un restaurante admite la combinación de mesas para formar un grupo más grande, puedes actualiza tu spots_open y tu spots_total para reflejarlo.

Supongamos que un restaurante puede combinar dos mesas pequeñas para una fiesta de 7 a 10 personas. personas.

Figura 3: Plano de planta sin reservas activas
Figura 3: Plano de edificio sin reservas activas

Si no hay reservas activas, los valores de party_size, spots_open y spots_total son las siguientes:

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

Ahora, con el mismo plano del edificio, se hace una reserva para una cantidad de 10 personas que combina dos tablas pequeñas.

Figura 4: Plano de edificio con una reserva activa que abarca dos tablas
Figura 4: Plano de edificio con una reserva activa que abarca dos tablas

Por lo tanto, los valores para party_size, spots_open y spots_total ahora son los siguientes:

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