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

PontoDescrição
EntradaEventos ERRO_JS, PROMISE_REJEITADA e CONSOLE com nivel = error vindos da ingestão
SaídaUm grupo por assinatura, com ocorrências, usuários afetados, navegadores e páginas
Próximo passoO 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:

ParteNormalização
MensagemUUIDs viram {id}, trechos hexadecimais com 8 ou mais caracteres viram {hash}, números inteiros viram {n} e dígitos soltos viram 0
ArquivoSai 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

  • ocorrencias soma 1 e ultima_ocorrencia_em é atualizada.
  • A primeira pilha não nula é mantida.
  • usuarios (usuario_id ou anonimo_id), navegadores e paginas guardam até 50 valores distintos cada. usuarios_afetados é calculado pelo banco a partir de usuarios, então também para em 50.
  • O status não muda: um erro RESOLVIDO nã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.
StatusSignificado
ABERTOPadrão de todo grupo novo
RESOLVIDOCorrigido pelo time
IGNORADOConhecido e sem ação prevista
Atualizado em 2026/10/07 00:30