Barbeiro Rápidodocs

Como funciona a fila de espera

3 min de leituraAtualizado há 2 meses

Quando o cliente abre o link e não acha horário num dia que precisa, ele pode entrar na fila de espera desse dia. Quando alguém cancela ou abre vaga ali, o sistema oferece automaticamente — quem confirma primeiro fica com o slot.

Como o cliente entra

  1. Cliente abre /b/{barbearia}/{barbeiro} (ou a landing direto).

  2. Tenta agendar mas o dia desejado está cheio.

  3. Aparece o botão "Entrar na fila de espera deste dia".

  4. Ele preenche:

    • Data preferida (já preenchida).
    • Período preferido — manhã, tarde, noite ou "qualquer".
    • Barbeiro preferido — o barbeiro escolhido, ou "qualquer".
    • Notas (opcional) — texto livre, vê pra equipe ("preciso até as 11h", "pra antes do casamento").
    • Dados do cliente — nome, telefone, e-mail (mesmo padrão do booking).
  5. Confirma e cai numa página de status com link permanente.

O que o sistema faz

  • Cria uma WaitlistEntry com status = waiting.
  • Gera access_token pra cliente acessar/cancelar a fila depois (mesmo conceito do agendamento).

A página de status mostra:

  • Detalhes da fila (dia, período, barbeiro).
  • "Vamos te avisar por WhatsApp/e-mail assim que abrir vaga".
  • Botão Cancelar minha entrada na fila.

Quando o sistema oferta

Quando alguém cancela um agendamento ou abre janela compatível, o matcher automático procura entries da fila que poderiam ocupar o slot.

Critérios pro match:

  • Data bate (mesmo dia da entry).
  • Barbeiro bate (ou entry quer "qualquer").
  • Período bate com o horário do slot (ou entry quer "qualquer").
  • Serviço que cabe na duração disponível.

Pra cada match, o sistema:

  1. Cria uma oferta (WaitlistOffer) com link único de confirmação (confirm_token).
  2. Manda WhatsApp pro cliente — "Abriu vaga: [data, hora, barbeiro]. Você tem 30 minutos pra confirmar."
  3. A oferta tem prazo de expiração — se ninguém confirma, expira sozinha.

Cliente confirma a oferta

Cliente recebe a mensagem com link, abre, vê o slot oferecido e clica Confirmar:

  1. Sistema valida (em transação) que o slot ainda está livre.
  2. Cria o agendamento normal.
  3. Marca a entry da fila como fulfilled.
  4. Cancela ofertas paralelas desse cliente (se ele estava em mais de uma fila).
  5. Manda confirmação normal de agendamento (e-mail/WhatsApp).

Cliente recusa ou ignora

  • Recusa explícita: marca a oferta como recusada. A entry da fila volta a waiting — pronta pra outro match.
  • Ignora: oferta expira em 30 minutos sozinha. Mesma volta pra waiting.

Em ambos os casos, o slot que abriu vai pro próximo da fila ou volta a ficar disponível normalmente.

Quando a entry expira

  • No fim do dia preferido, a entry da fila sem match vira expired. Cliente pode entrar na fila de outro dia se quiser.

Quando expira ou é cancelada

  • Cliente cancela pelo link — status = cancelled, cancelled_reason = customer.
  • Staff cancela pelo painel — status = cancelled, cancelled_reason = staff.
  • Sistema expira sozinho — status = expired.

Próximos passos

Foi útil?