O Plopino, um sistema para compartilhar arquivos HTML por link, registra visitas, prévias de links e falhas de analytics de maneira diferenciada para evitar confusões e garantir precisão. Este guia analítico detalha três decisões do código atual e seus limites.
1. Separar Pageview de Abertura de Conteúdo
O script do Umami é usado nas páginas do produto, enquanto o conteúdo HTML enviado pelo usuário é servido sem o tracker. Para a segunda superfície, o servidor emite um evento chamado board-view. A regra mantida é que o servidor não emite um pageview para essa abertura. No relatório, não somos contabilizados como visitantes únicos. São sinais de superfícies diferentes, com limitações diferentes.
Regras do Servidor
- Respostas de 2xx e 304 são contabilizadas
- Respostas de 404 são descartadas
- Recursos que não são páginas são ignorados
- Falhas de HTTP não OK e exceções são registradas
2. Um GET pode ser Só uma Prévia de Link
Quando o contador sai do navegador e vai para o servidor, entram requisições de robôs, prévias de mensagens e ferramentas de diagnóstico. O filtro atual reconhece assinaturas de User-Agent e descarta UA vazia. Há um caso explícito para sondas do Globalping, além de ferramentas como curl.
Heurística de Filtragem
- Filtragem baseada em User-Agent
- Exclusão de dados de robôs legítimos
- Consideração de sequência de uso
3. O Upload Não Deve Esperar pelo Analytics
O envio de eventos fica fora da espera da resposta principal. Escrever apenas "void sendEvent()" não trata uma rejeição. A função chamada precisa absorver a falha esperada. Este trecho reduzido mostra o padrão usado no reporter, omitindo montagem do payload e filtros.
Estratégia de Envio
- Envio de eventos é best effort
- Não há fila durável nem confirmação de processamento do evento
- Eventos podem ser perdidos
Conclusão
A lição que levo para outros projetos é escrever primeiro o que cada contador significa e só então decidir onde coletá-lo. A precisão e a clareza na implementação de analytics são fundamentais para a confiabilidade do sistema.