Cage (Gaiola)
A Cage representa um espaco fisico (gaiola, baia, box) usado para acomodar pets durante atendimentos no centro de estetica.
Descricao
As gaiolas sao recursos limitados que precisam ser gerenciados. Cada pet em atendimento ocupa uma gaiola, e o sistema controla automaticamente a ocupacao.
Dados
Informacoes da Gaiola
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| name | Texto | Sim | Nome/identificacao (ex: "G01", "Box A") |
| empty | Booleano | Sim | Se esta vazia |
| size | Selecao | Nao | Tamanho (pequena, media, grande) |
| location | Texto | Nao | Localizacao (ex: "Setor B") |
| active | Booleano | Sim | Se esta ativa |
Relacionamentos
Pertence a
| Entidade | Obrigatorio | Descricao |
|---|---|---|
| Account | Sim | Conta do petshop |
| Store | Sim | Filial |
Possui
| Entidade | Descricao |
|---|---|
| BeautyAppointments | Agendamentos usando esta gaiola |
Estados de Ocupacao
Regras de Ocupacao
| Estado | Condicao |
|---|---|
| empty | Nenhum agendamento ativo usando |
| occupied | Um agendamento com status != scheduled e != done |
Gerenciamento Automatico
Ao Fazer Check-in
- Gaiola selecionada e validada (deve estar vazia)
- Gaiola marcada como
empty: false - Vinculada ao agendamento
Ao Concluir (done)
- Gaiola e automaticamente liberada
- Gaiola marcada como
empty: true - Disponivel para novo uso
Ao Cancelar
- Gaiola e liberada
- Disponivel imediatamente
Ao Trocar Gaiola
- Gaiola anterior:
empty: true - Nova gaiola:
empty: false
Filtros na Selecao
Ao selecionar gaiola para check-in:
Filtro: empty = true
Apenas gaiolas vazias aparecem para selecao.
Tamanhos
| Tamanho | Descricao | Uso Tipico |
|---|---|---|
| small | Pequena | Gatos, caes pequeno porte |
| medium | Media | Caes medio porte |
| large | Grande | Caes grande porte |
Validacoes
| Campo | Regra |
|---|---|
| name | Obrigatorio, unico por loja |
| empty | Obrigatorio |
Regras de Negocio
- Gaiola obrigatoria para check-in: Nao e possivel fazer check-in sem gaiola
- Uma gaiola por atendimento: Cada agendamento usa apenas uma gaiola
- Gaiola unica por loja: Nomes nao podem repetir na mesma filial
- Liberacao automatica: Sistema gerencia ocupacao automaticamente
Consultas Comuns
Gaiolas Disponiveis
WHERE empty = true AND active = true
Gaiolas Ocupadas
WHERE empty = false
Taxa de Ocupacao
ocupacao = gaiolas_ocupadas / total_gaiolas * 100
Visualizacao
No Kanban
- Card do agendamento mostra nome da gaiola
- Icone indica status da gaiola
Na Lista de Gaiolas
- Exibe todas as gaiolas
- Status de ocupacao
- Agendamento atual (se ocupada)
Permissoes
| Acao | Descricao |
|---|---|
| Criar | Adicionar nova gaiola |
| Editar | Alterar nome, tamanho, localizacao |
| Desativar | Marcar como inativa |
| Visualizar | Ver status e historico |
Integracao com Agendamentos
Obrigatoriedade
Gaiola e obrigatoria quando:
- Status != "scheduled"
- Status != "done"
- Ou seja, durante todo o atendimento
Validacao
Ao tentar fazer check-in:
- Verifica se gaiola foi selecionada
- Verifica se gaiola esta vazia
- Se ocupada: erro "Gaiola ja esta ocupada"