Trabalho para cliente
Gestão de incidentes para um grande evento de automobilismo
O sistema de gestão de incidentes é um app web instalável que registra, tria, designa e encerra ocorrências elétricas e hidráulicas de um evento em autódromo; a equipe de campo registra pelo celular, mesmo sem rede.
- Tecnologias utilizadas
- Status
- Pronto para entrega
O problema
Em um grande evento em autódromo, uma falha elétrica ou hidráulica exige resposta rápida e coordenada. Quando o aviso corre por canais soltos, como rádio e telefone, ninguém tem a visão do conjunto: a mesma ocorrência chega por várias pessoas, a equipe perde tempo para achar o local exato e, no fim, não sobram dados sobre os tempos de atendimento.
O sistema substitui esses canais por um só painel, que se atualiza na hora, no qual cada ocorrência é aberta, acompanhada e encerrada com histórico completo.
O que foi construído
Um aplicativo web instalável (PWA), usado no celular pela equipe de campo, e um painel para a central de operação. Com ele, é possível:
- registrar uma ocorrência em poucos toques, com nome e horário preenchidos automaticamente e a área sugerida a partir dos dados cadastrados com antecedência;
- escolher a categoria (elétrica ou hidráulica), o tipo de problema em uma lista e a urgência (alta, média ou baixa), e anexar até três fotos;
- registrar mesmo sem conexão, deixando o envio por conta do aplicativo quando a rede voltar;
- acompanhar todas as ocorrências em um quadro ao vivo com seis colunas, uma por situação;
- designar a equipe técnica, mudar a urgência e controlar os prazos de primeira resposta e de solução;
- receber a sugestão de agrupamento quando duas ocorrências parecem ser a mesma;
- encerrar em duas etapas: a equipe resolve e informa o que foi feito, e o coordenador geral valida;
- consultar relatórios por situação, urgência, área e categoria.
Os avisos chegam por notificação no aplicativo e por e-mail. Uma configuração ampliada acrescenta WhatsApp, SMS, um alerta reforçado que se repete até a confirmação dentro do aplicativo, mapa interativo, vídeo e um relatório executivo diário de sete seções.
Como funciona
Sem rede. Quando não há conexão, o aplicativo guarda a ocorrência no aparelho, com o selo “aguardando sincronização”, e a envia automaticamente quando a rede volta, desde que o aplicativo esteja aberto. Ao receber, a central devolve ao solicitante a confirmação “recebido pela central”, com o número da ocorrência. O prefixo do número indica a categoria (EL- ou HI-), a numeração é única e sequencial, e a categoria não muda depois do registro.
Localização. Cada ocorrência é vinculada a uma área. A localização usa pontos fixos da planta do autódromo, cadastrados antes do evento, sem depender de GPS nem de sinal de rede.
Ciclo de vida. A ocorrência passa por seis situações: não atendido, em triagem, em andamento, pendente, resolvido e finalizado. Quem registra não encerra, e quem resolve não valida. Uma ocorrência resolvida só é finalizada quando o coordenador geral a valida, e ele pode reabri-la com um motivo.
Prazos. Cada nível de urgência tem prazo de primeira resposta e de solução, iguais para as duas categorias. Quando a central muda a urgência de uma ocorrência, os prazos são recalculados a partir da abertura, e o relógio não reinicia.
Tempo real. O painel é atualizado por Server-Sent Events. Toda mudança de situação passa por um único ponto de escrita, que confere a permissão pelo contrato, grava o evento e, na mesma transação, emite pelo PostgreSQL o aviso que acorda os demais módulos. Cada notificação é gravada antes do envio e, se a falha for temporária, é reenviada em intervalos cada vez maiores.
Segurança. Cada usuário tem acesso individual, com troca de senha no primeiro acesso e limite de tentativas de login, e as senhas são protegidas com argon2id. Nome, celular e e-mail são usados apenas na operação do evento.
Como foi construído
O sistema foi dividido em módulos independentes, como registro, sincronização, painel, notificações e relatórios, construídos sobre um contrato compartilhado escrito em código. O contrato reúne as enumerações, a máquina de estados, as regras de prazo, os esquemas de sincronização, os eventos e as notificações. O plano de cada módulo só pode alterar a própria pasta.
A especificação da API e os tipos do frontend são gerados desse contrato, e a integração contínua reprova a mudança que os deixe fora de sincronia. Operações que levam mais de dois segundos rodam em segundo plano: a API responde com o código 202 (aceito) e o aplicativo mostra o aviso de processamento.
Para testar o sistema antes da entrada em operação, um kit de ensaio simula queda de rede, reinício do backend com notificações em andamento e restauração de backup. Para produção, o sistema é empacotado em três contêineres: PostgreSQL 16, o backend FastAPI e um servidor Caddy, que serve o aplicativo com TLS automático.
Para quem é e quais são os limites
O sistema distingue cinco papéis:
- usuário geral cadastrado, que registra e acompanha as ocorrências que abriu;
- coordenador de área, que registra e acompanha as das suas áreas;
- equipe técnica, que recebe designações e registra chegada, andamento e solução;
- responsável técnico da central, que faz triagem, designação e mudança de urgência;
- coordenador geral, que valida o encerramento e decide as duplicidades.
O sistema foi desenvolvido sob medida para um cliente, e não como produto de prateleira. Está totalmente desenvolvido e ainda não foi entregue. A documentação inclui o manual do usuário, o manual do administrador e um roteiro para a entrada em operação. Os limites estão documentados: no iPhone, as notificações exigem o aplicativo na Tela de Início; as ações da equipe técnica precisam de rede; e um registro feito por engano não é cancelado, e sim encerrado pela central.
Perguntas frequentes
O que é o sistema de gestão de incidentes da Sigil Labs para um evento de automobilismo?
É um sistema web instalável, desenvolvido pela Sigil Labs sob medida para um cliente, que registra, tria, acompanha e encerra ocorrências elétricas e hidráulicas de um grande evento em autódromo. A equipe de campo usa o celular, e a central de operação acompanha tudo em um painel ao vivo.
Como o aplicativo de gestão de incidentes funciona sem conexão de rede?
O aplicativo guarda a ocorrência no próprio aparelho, com o selo "aguardando sincronização", e a envia automaticamente quando a rede volta, desde que o aplicativo esteja aberto. Quando a central recebe, o selo muda para "recebido pela central" e mostra o número da ocorrência. As ações da equipe técnica, como registrar a chegada e a solução, ainda exigem rede.
Quem pode registrar, resolver e encerrar uma ocorrência nesse sistema?
Qualquer usuário cadastrado registra uma ocorrência. A equipe técnica registra chegada, andamento e solução, e a central faz a triagem e a designação. Só o coordenador geral valida o encerramento, de modo que quem resolve não é quem dá a ocorrência por finalizada.
Como o sistema evita ocorrências duplicadas?
Quando já existe uma ocorrência parecida, o aplicativo mostra um aviso de possível duplicidade. A decisão é do coordenador geral, que compara as duas lado a lado e pode agrupá-las ou mantê-las separadas, inclusive quando as categorias são diferentes.
Quais são os limites conhecidos desse sistema de gestão de incidentes?
No iPhone, as notificações só funcionam com o aplicativo na Tela de Início, em iOS 16.4 ou mais novo. As ações da equipe técnica precisam de rede, e não há como cancelar um registro feito por engano. A central o encerra como registro indevido ou o agrupa como duplicado.
O sistema pode tratar outros tipos de ocorrência além da elétrica e da hidráulica?
A concepção prevê outras categorias além da elétrica e da hidráulica, cada uma como uma extensão da mesma ocorrência. O escopo descrito na documentação, porém, cobre essas duas categorias, que seguem o mesmo fluxo, com as mesmas pessoas e os mesmos prazos.