Workflow do alarme
Visão de fluxo (sequence)
Seção intitulada “Visão de fluxo (sequence)”sequenceDiagram
autonumber
actor Cliente as Cliente final
participant Painel as Painel de alarme
participant Linha as Linha SIP/PSTN
participant Sibulla as Sibulla (receptor)
participant SowilAPI as sowil-api (Laravel)
participant Grifos as Grifos (operador)
participant Operador as Operador humano
participant Buccina as Buccina (discador)
participant VTR as wil_agente (VTR)
Cliente->>Painel: Sensor dispara
Painel->>Linha: Disca central (Contact ID)
Linha->>Sibulla: Evento bruto
Sibulla->>SowilAPI: POST evento normalizado
SowilAPI->>Grifos: Push (websocket)
Grifos->>Operador: Cartão de evento na fila
Operador->>Grifos: Triagem (real / fantasma / teste)
alt Real
Operador->>Buccina: Disca cliente para confirmar
Buccina-->>Operador: Áudio + resposta
Operador->>VTR: Despacha viatura
VTR-->>Grifos: Confirma chegada / status
Operador->>Grifos: Fecha evento
else Fantasma
Operador->>Grifos: Fecha sem despacho
end
Onde a v2 entra
Seção intitulada “Onde a v2 entra”sequenceDiagram
autonumber
actor Cliente as Cliente final
participant Painel as Painel
participant Listener as alarm-listener (v2)
participant SolutioAPI as solutio-api (Rails)
participant Nora as Nora Voice
participant WarRoom as War Room
participant Operador as Operador
participant Field as solutio-field (VTR Expo)
Cliente->>Painel: Sensor dispara
Painel->>Listener: Evento bruto
Listener->>SolutioAPI: Evento normalizado
SolutioAPI->>Nora: Triagem por IA
alt Nora classifica como ruído/teste
Nora->>SolutioAPI: Fecha automaticamente
SolutioAPI-->>Cliente: SMS / app de confirmação
else Nora detecta possível real
Nora->>WarRoom: Abre sessão multi-party
WarRoom-->>Operador: Sala viva (vídeo + áudio + cliente)
WarRoom-->>Cliente: Convite por voz/app
Operador->>WarRoom: Confirma e despacha
WarRoom->>Field: Push para VTR mais próxima
Field-->>WarRoom: Status em tempo real
Operador->>WarRoom: Fecha quando resolvido
end
Onde está a tese
Seção intitulada “Onde está a tese”Tempo médio (estimado, atual)
Seção intitulada “Tempo médio (estimado, atual)”| Etapa | Tempo médio | Onde a v2 ataca |
|---|---|---|
| Disparo → fila no Grifos | 8-20s | Igual (não muda) |
| Fila → triagem inicial | 30-180s | Nora resolve em <5s para falsos positivos |
| Triagem real → confirmação cliente | 60-120s | War Room: cliente entra direto na sessão |
| Confirmação → VTR despachada | 90-180s | War Room já passa coordenadas para o app |
| Total ponta-a-ponta (real) | ~5-9 min | Meta v2: <90s para evento real |
Pontos de falha conhecidos no sistema atual
Seção intitulada “Pontos de falha conhecidos no sistema atual”flowchart TD
A[Painel dispara] --> B{Linha disponível?}
B -->|Não| C[Evento perdido]
B -->|Sim| D[Sibulla recebe]
D --> E{Match com cliente cadastrado?}
E -->|Não| F[Evento não roteado]
E -->|Sim| G[Grifos recebe]
G --> H{Operador disponível?}
H -->|Madrugada / pico| I[Fila cresce]
I --> J[Tempo de resposta aumenta]
H -->|Sim| K[Triagem]
K --> L{Confirmação OK?}
L -->|Não atende cliente| M[Despacho preventivo<br/>custo alto]
classDef fail fill:#e63946,stroke:#7a1f2a,color:#fff
classDef warn fill:#f4a261,stroke:#9a5d2c,color:#fff
class C,F,J,M fail
class I warn
A v2 ataca I (fila em pico/madrugada — Nora absorve) e M (custo de despacho preventivo — Nora confirma por voz antes).