Escalação de Alertas
A escalação é um mecanismo automático que destaca alertas não tratados dentro do prazo esperado, garantindo que nenhuma ocorrência passe despercebida.
Como funciona
Um job agendado (EscalateUnacknowledgedAlertsJob) roda a cada 30 segundos — para cada site ativo — e procura alertas que:
- Ainda estão com status Ativo
- Não foram reconhecidos por nenhum operador
- Ainda não foram escalados (
is_escalated = false) - Ultrapassaram o tempo limite de escalação definido para o tipo de alerta
Quando essas condições são atendidas, o alerta é marcado como escalado. A verificação só considera tipos de alerta cujo tratador (handler) declara ser escalável.
Tempos de escalação por tipo
Cada tipo de alerta tem seu próprio tempo de escalação, definido pelo módulo que o registrou:
| Tipo de alerta | Tempo | Escalável |
|---|---|---|
| Botão de Pânico | 2 min | Sim |
| Dispositivo Offline | Configurável | Sim |
| Antena Offline | Configurável | Sim |
| Bateria Baixa | Configurável | Sim |
| Entrada em Zona Restrita | Configurável | Sim |
Alertas de Botão de Pânico têm apenas 2 minutos antes de serem escalados. Isso reflete a criticidade do cenário — uma pessoa em emergência precisa de resposta imediata.
O tempo limite de escalação é definido pela variável LOCATION_ESCALATION_TIMEOUT em config/location.php (padrão 120 segundos = 2 minutos). Cada tratador de alerta pode expor seu próprio prazo; os tempos exatos por tipo dependem do módulo que registrou o alerta.
O que acontece na escalação
Quando um alerta é escalado:
- O campo
is_escalatedé marcado como verdadeiro - Um evento de severidade alta é registrado (
AlertEscalated) - O evento é transmitido via WebSocket para todos os operadores conectados
- O alerta ganha destaque visual na interface (badge de escalação)
Impacto visual
Alertas escalados são diferenciados visualmente:
- Badge "Escalado" — Exibido na lista de alertas e nos detalhes
- Severidade elevada — O evento de escalação é registrado como severidade Alta
- Registro detalhado — O evento
AlertEscalatedinclui: tipo do alerta, horário em que foi disparado (triggered_at), tempo decorrido em segundos, a zona (id e nome) e a identificação da origem do alerta
Como prevenir escalação
A escalação é prevenida quando um operador reconhece o alerta dentro do prazo:
Alerta criado → Reconhecido em < 2 min → NÃO é escalado ✓
Alerta criado → Sem ação por > 2 min → ESCALADO ⚠
Após a escalação, o alerta ainda pode ser reconhecido e resolvido normalmente. A flag de escalação é apenas um indicador histórico.
Monitoramento
Os alertas escalados podem ser filtrados na lista de alertas e aparecem nos relatórios de performance, permitindo análise de tempos de resposta da equipe de operação.