ENES
Fale com a Sigil Labs

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.

Por Sigil Labs · Publicado em · Atualizado em

← Todos os projetos

Ficha do projetoNº 11
Tecnologias utilizadas
  • React
  • TypeScript
  • PWA offline-first
  • FastAPI
  • PostgreSQL
  • Server-Sent Events
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.

← Todos os projetos