Pular para o conteúdo principal

BeautyAppointment (Agendamento)

O BeautyAppointment representa um agendamento de servicos de estetica, controlando todo o fluxo desde a marcacao ate a conclusao.

Descricao

Um agendamento pode ser marcado (calendario) ou imediato (walk-in). Ele passa por um fluxo de check-in, execucao e checkout, com integracao automatica com vendas e financeiro.

Dados

Informacoes do Agendamento

CampoTipoObrigatorioDescricao
statusSelecaoSimEstado atual do agendamento
scheduleBooleanoSimSe e agendado (true) ou imediato (false)
date_timeDataHoraCondicionalData/hora do agendamento (obrigatorio se schedule=true)
end_timeDataHoraCalculadoHorario de termino (baseado na duracao)
done_timeDataHoraAutoHorario de conclusao
service_timeNumeroCalculadoTempo total em minutos
time_labelTextoAutoRepresentacao legivel do horario

Check-in/Checkout

CampoTipoDescricao
checkinBooleanoSe check-in foi realizado
checkin_date_timeDataHoraHorario do check-in
checkoutBooleanoSe checkout foi realizado
checkout_date_timeDataHoraHorario do checkout
paidBooleanoSe todos os servicos estao pagos

Prioridade (Walk-in)

CampoTipoDescricao
priorityNumeroPrioridade na fila (unico por loja)
priority_ordinalTextoFormato "Xo" (ex: "1o", "2o")

Recorrencia

CampoTipoDescricao
schedule_frequencySelecao"one_time", "fixed", "session"
frequencySelecaoIntervalo de recorrencia
frequency_end_dateDataData final (se fixed)
sessionsNumeroNumero de sessoes (se session)
current_sessionNumeroSessao atual (padrao: 1)
beauty_appointment_referenceTextoID do agendamento pai

Informacoes do Pet (Denormalizadas)

CampoTipoDescricao
nameTextoFormato "Cliente: Pet"
pet_breedTextoRaca do pet
pet_primary_colorTextoCor primaria
pet_secondary_colorTextoCor secundaria
pet_color_nameTextoNome da cor
pet_image_urlTextoURL da foto do pet
pet_characteristic_idsArrayCaracteristicas do pet

Taxidog

CampoTipoDescricao
have_taxid_dogBooleanoSe precisa de transporte

Relacionamentos

Pertence a

EntidadeObrigatorioDescricao
AccountSimConta do petshop
StoreSimFilial
UserSimOperador que criou
CustomerSimCliente
PetNaoPet (geralmente obrigatorio)
CageCondicionalGaiola (obrigatorio se nao agendado)
SaleNaoVenda associada
BeautyScaleCondicionalEscala/profissional (obrigatorio se agendado)
CheckinFormCondicionalFormulario de check-in
CheckoutFormCondicionalFormulario de checkout
AddressCondicionalEndereco (obrigatorio se taxidog)

Possui

EntidadeDescricao
BeautyServicesServicos executados
CheckinAnswersRespostas do check-in
CheckoutAnswersRespostas do checkout
CommentsComentarios
WhatsappNotificationsNotificacoes enviadas
DeliveriesEntregas (taxidog)

Ciclo de Vida (Status)

Estados

StatusDescricaoAcoes Permitidas
scheduledAgendado, aguardandoCheck-in, Cancelar, Editar
checkinPet recebido, aguardando inicioIniciar, Voltar scheduled
runningServico em execucaoFinalizar, Voltar check-in
checkoutServico concluido, aguardando saidaConcluir, Voltar running
doneConcluido e finalizadoNenhuma
canceledCanceladoNenhuma

Regras de Transicao

DeParaCondicoes
scheduledcheckinSelecionar gaiola, preencher formulario
scheduledcanceledSempre permitido
checkinrunningSempre permitido
checkinscheduledPode reverter
runningcheckoutPreencher formulario checkout
runningcheckinPode reverter
checkoutdoneSempre permitido
checkoutrunningPode reverter

Check-in

Fluxo de Check-in

Formulario de Check-in

CampoTipoDescricao
checkin_form_idReferenciaFormulario a usar
checkin_answersArrayRespostas as perguntas

Regras

  1. Gaiola e obrigatoria para check-in
  2. Gaiola deve estar vazia
  3. Formulario de check-in e obrigatorio
  4. Perguntas sao dinamicas por formulario

Checkout

Fluxo de Checkout

Formulario de Checkout

CampoTipoDescricao
checkout_form_idReferenciaFormulario a usar
checkout_answersArrayRespostas as perguntas

Regras

  1. Formulario de checkout e obrigatorio
  2. Todos os servicos sao marcados como "done"
  3. Venda e gerada automaticamente se servicos pendentes

Geracao de Venda

Quando Gera Venda

  1. Ao marcar generate_sale = true no check-in
  2. Ao mudar para checkout com servicos nao pagos

Logica

Gaiolas (Cage)

Ocupacao

  • Gaiola marcada como empty: false quando atribuida
  • Gaiola marcada como empty: true quando liberada

Liberacao Automatica

Gaiola e liberada quando:

  • Status muda para "done"
  • Agendamento e cancelado
  • Agendamento e destruido
  • Gaiola e trocada

Troca de Gaiola

Se gaiola e alterada:

  1. Gaiola anterior: empty: true
  2. Nova gaiola: empty: false

Recorrencia

Tipos de Recorrencia

TipoDescricao
one_timeAgendamento unico
fixedRepete ate uma data final
sessionRepete N vezes

Frequencias Disponiveis

FrequenciaDescricao
dailyDiario
weeklySemanal
biweeklyQuinzenal
monthlyMensal
bimonthlyBimestral
quarterlyTrimestral
half_yearlySemestral
yearlyAnual

Geracao de Agendamentos

Fixed

Cria agendamentos desde data inicial ate frequency_end_date
Todos compartilham mesmo beauty_appointment_reference

Session

Cria N agendamentos (sessions)
Cada um com current_session incrementado (1, 2, 3...)
Todos compartilham mesmo beauty_appointment_reference

Atualizacao de Serie

OpcaoDescricao
update_onlyAtualiza apenas este agendamento
update_nextAtualiza este e futuros
update_allAtualiza toda a serie

Prioridade (Walk-in)

Sistema de Fila

Para agendamentos nao agendados (walk-in):

  1. Prioridade define ordem de atendimento
  2. Deve ser unica por conta/loja/status
  3. Valores menores ou iguais a 0 sao tratados como nulo
  4. Exibida como ordinal (1o, 2o, 3o)

Ordenacao

ORDER BY priority EXISTS DESC, priority ASC

Agendamentos COM prioridade aparecem primeiro, depois por valor.

Taxidog

Quando Habilitado

Se have_taxid_dog = true:

  • Endereco e obrigatorio
  • Cria Delivery tipo "taxidog" para buscar o pet
  • Cria Delivery de retorno ao mudar para checkout

Tipos de Delivery

TipoQuando Criado
getAo criar agendamento
deliveryAo mudar para checkout

Notificacoes WhatsApp

Quando Enviado

Ao mudar para status "checkout":

  • Se cliente tem WhatsApp
  • Notificacao tipo "beauty_appointment_checkout"
  • Status "queued"

Limpeza

Se status sai de "checkout": notificacoes pendentes sao removidas.

Automacoes

Ao Criar

  1. Define checkin_date_time se walk-in
  2. Copia caracteristicas do pet
  3. Cria entregas taxidog (se aplicavel)
  4. Gera agendamentos recorrentes (se aplicavel)
  5. Vincula servicos

Ao Atualizar

  1. Sincroniza status nos servicos
  2. Atualiza gaiolas (ocupacao)
  3. Propaga alteracoes para serie (se recorrente)
  4. Cria delivery de retorno (se checkout + taxidog)
  5. Envia notificacao WhatsApp (se checkout)

Ao Excluir

  1. Libera gaiola
  2. Servicos pagos voltam para "purchased"
  3. Servicos nao pagos sao destruidos
  4. Remove entregas taxidog

Validacoes

CampoRegraQuando
customer_idObrigatorioSempre
pet_idObrigatorioContextos especificos
date_timeObrigatorioSe schedule = true
beauty_scale_idObrigatorioSe schedule = true
cage_idObrigatorioSe status != scheduled e != done
new_servicesMinimo 1 servicoSempre
timeSlot disponivelSe schedule = true
address_idObrigatorioSe have_taxid_dog = true

Visualizacoes

Kanban

Colunas por status:

  • scheduled, checkin, running, checkout, done
  • Cards mostram: horario, foto pet, nome, raca, cliente, gaiola, prioridade, servicos

Calendario

  • Titulo: nome (Cliente: Pet)
  • Inicio/Fim: date_time / end_time
  • Agrupado por BeautyScale

Tabela (Contexto Pet)

Colunas: cliente, servicos, data/hora, done_time, escala, status

Permissoes

AcaoDescricao
CriarCriar novo agendamento
EditarApenas status = scheduled
ExcluirApenas status = scheduled
Check-inMudar para checkin
IniciarMudar para running
CheckoutMudar para checkout
ConcluirMudar para done
ReverterVoltar status anterior