Erros
Situação no projeto
Implementado em backend/model/erro.rs e na tela /app/erros.
Objetivo
Transformar milhares de ocorrências em poucos grupos, ordenados pelo impacto, para que o time saiba o que corrigir primeiro.
Entradas e saídas
| Ponto | Descrição |
|---|---|
| Entrada | Eventos ERRO_JS, PROMISE_REJEITADA e CONSOLE com nivel = error vindos da ingestão |
| Saída | Um grupo por assinatura, com ocorrências, usuários afetados, navegadores e páginas |
| Próximo passo | O time marca o grupo como RESOLVIDO ou IGNORADO |
Assinatura
A assinatura é tipo|mensagem|arquivo|linha, com a mensagem e o arquivo normalizados para que variações do mesmo erro caiam no mesmo grupo:
| Parte | Normalização |
|---|---|
| Mensagem | UUIDs viram {id}, trechos hexadecimais com 8 ou mais caracteres viram {hash}, números inteiros viram {n} e dígitos soltos viram 0 |
| Arquivo | Sai a query e o hash da URL, fica só o nome do arquivo e hashes viram {hash} |
O grupo é da conta, não do aplicativo
A unicidade é por conta_id + assinatura. O mesmo erro em dois aplicativos da mesma conta cai num único grupo.
A cada ocorrência
ocorrenciassoma 1 eultima_ocorrencia_emé atualizada.- A primeira pilha não nula é mantida.
usuarios(usuario_idouanonimo_id),navegadoresepaginasguardam até 50 valores distintos cada.usuarios_afetadosé calculado pelo banco a partir deusuarios, então também para em 50.- O status não muda: um erro
RESOLVIDOnão reabre sozinho quando volta a acontecer.
Tela de erros
- Lista ordenada por usuários afetados e depois por ocorrências.
- Filtro por aplicativo, mensagem, tipo, status e navegador. A listagem paginada aplica só aplicativo e status; os demais campos usam a busca por filtro.
- Detalhe com assinatura, arquivo e linha, pilha, primeira e última ocorrência, navegadores e páginas atingidas.
- Ações: Alterar status, Registrar erro manualmente e excluir.
| Status | Significado |
|---|---|
ABERTO | Padrão de todo grupo novo |
RESOLVIDO | Corrigido pelo time |
IGNORADO | Conhecido e sem ação prevista |