Como escolher um formato de disponibilidade
Há duas maneiras de especificar dados de disponibilidade: (1) Vagas abertas ou (2) Recorrência. Escolha apenas um método para usar em todos os seus comerciantes e serviços. Depois de selecionar um método, ele precisa ser usado para toda a integração (feeds, servidor de reservas e atualizações em tempo real).
Use o guia a seguir para determinar qual formato de disponibilidade é mais adequado:
- No seu sistema, você armazena a disponibilidade como intervalos explícitos, por exemplo, 8h00 - 8h30?
- No seu sistema, você armazena a disponibilidade em um formato recorrente,
ou seja, os comerciantes têm serviços que ocorrem com frequência consistente com
poucos desvios? Por exemplo, os espaços são repetidos a cada 15 minutos, das 9h às 17h, e apenas um assento está disponível em cada incremento de 15 minutos.
- Use Recorrência
- Para os serviços dos comerciantes, pode haver mais de um lugar aberto por vez? Por exemplo, 30 vagas abertas para uma turma
- Nenhuma das opções acima se aplica?
- Use Horários disponíveis
- Observação: embora o uso da recorrência seja mais eficiente e possa resultar em tamanhos de feed menores, se o modelo de dados não tiver suporte nativo à recorrência, não é recomendado usar a recorrência, porque será necessário recalcular o valor de todo o dia de slots recorrentes para cada atualização em tempo real.
Horários disponíveis
Definições de parâmetro:
- spots_open: o número de vagas disponíveis no momento para esta entrada de disponibilidade.
- spots_total: o número total de vagas que o comerciante tem para essa configuração, incluindo as que não estão disponíveis.
O método Spots Open indica explicitamente todas as vagas disponíveis e oferece suporte ao modelo de ter vários espaços para o mesmo serviço. Esses dois parâmetros trabalham juntos para criar uma representação digital da capacidade do serviço.
Quando uma reserva é feita, o número de spots_open diminui em 1 por uma atualização em tempo real. O número de spots_total permanece o mesmo. Quando spots_open = 0, o slot não aparece mais.
Exemplos de serviços
Uma aula de ioga ou um salão de beleza têm os seguintes planos de piso e nenhuma reserva ativa
Figura 1: planta do andar sem reservas ativas O feed de disponibilidade para dois espaços desses comerciantes seria assim:
{ "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", } ] }
Exemplo de serviços com uma reserva
Figura 2:planta baixa com um agendamento ativo Agora um usuário reserva um dos lugares. Quando uma reserva é feita, uma atualização em tempo real é emitida para atualizar a disponibilidade. No próximo feed de disponibilidade diária, essa reserva vai aparecer. O feed de disponibilidade desses comerciantes teria spots_open decrementado em 1 para o horário de 1º de setembro de 2018 às 16h00 GMT O horário de 1 de setembro de 2018 às 20h00 GMT não vai mudar.
Snippet do feed com uma reserva
{ "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", } ] }
Recorrência
Definições de parâmetro
- recorrência: a representação de espaços disponíveis recorrentes.
- repeat_until_sec: o carimbo de data/hora UTC do horário de término do último intervalo em que a disponibilidade se repete.
- repeat_every_sec: o número de segundos entre os horários disponíveis
sucessivos. Por exemplo, se repeat_every_sec = 1800 (30 minutos) e o
start_sec começar às 9h, os espaços vão se repetir a cada 30 minutos às
9h, 9h30, 10h e assim por diante.
- Observação: não é necessário especificar spots_open e spots_total. Eles são considerados iguais a 1, a menos que haja uma schedule_exception
O método de recorrência indica a disponibilidade diária de serviços que ocorrem em intervalos regulares, por exemplo, um serviço que ocorre a cada 30 minutos das 9h às 17h todos os dias. Com a recorrência, você especifica a duração do intervalo, a primeira vez no dia em que ele ocorre, a frequência com que ele deve ser repetido e quando ele deve parar de ser repetido no mesmo dia. Observação: um novo conjunto de horários recorrentes precisa ser especificado para cada dia separadamente. Se um slot já estiver reservado no período, você vai especificar uma exceção de programação. Por exemplo, repita a cada meia hora das 9h às 21h, exceto das 11h às 11h30. Cada serviço individual terá suas próprias recorrências e exceções de programação.
Exemplos de serviços
Um salão de beleza tem o seguinte plano de piso e nenhuma reserva ativa
Figura 3:plantas sem reservas ativas. Assume apenas um lugar aberto por serviço (por exemplo, Sally oferece serviços de corte de cabelo a cada 30 minutos, mas só pode atender um cliente por vez). O feed de disponibilidade para um horário desses comerciantes seria assim:
Snippet do feed:
{ "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 } } ] }
Exemplo de serviços com uma reserva
Figura 4:plantas com uma reserva ativa. Assume apenas um lugar aberto por serviço (por exemplo, Sally oferece serviços de corte de cabelo a cada 30 minutos, mas só pode atender um cliente por vez). Agora imagine que um usuário marca um corte de cabelo com Sally às 12h30. Quando uma reserva é feita, uma atualização em tempo real é emitida para atualizar a disponibilidade. No próximo feed de disponibilidade diária, essa reserva vai aparecer. O feed de disponibilidade desses comerciantes teria uma exceção de agendamento das 12h30 às 13h para um serviço com duração de 30 minutos.
Snippet do feed com um agendamento:
{ "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 } } ], } ] }