Todo setor regulado tem a mesma dor silenciosa: a fonte oficial muda e ninguém avisa. O Operador Nacional do Sistema Elétrico (ONS) publica e atualiza normativas que equipes de operação inteiras precisam seguir à risca — mas descobrir que algo mudou, e o que mudou, dependia de alguém lembrar de conferir o site. Quando a conferência falha, a equipe opera com um documento defasado sem saber.
Construí o Sentinela para eliminar essa dependência: um sistema desktop em Java que varre o site do ONS automaticamente, detecta atualizações, baixa os documentos, compara as versões, identifica o que foi alterado e emite alertas com as novidades. Este post descreve o padrão de engenharia por trás dele — que se aplica a qualquer fonte oficial: diário oficial, agência reguladora, portal de tribunal, página de licitações.
O padrão em quatro estágios
Um monitor de fonte oficial é sempre a mesma máquina, independente da tecnologia:
- Varredura agendada. Um processo visita a fonte em intervalo fixo. Sem heroísmo de tempo real: para normativas, checar algumas vezes ao dia é honesto e educado com o servidor alheio.
- Detecção de novidade. Comparar o que a fonte lista agora com o que você viu na última varredura. Isso exige estado persistente — o robô precisa lembrar do passado para reconhecer o novo.
- Diff de conteúdo. Documento novo ou alterado é baixado e comparado com a versão anterior. É aqui que mora o valor: a diferença entre avisar “o documento X mudou” e mostrar “mudou isto no documento X” é a diferença entre gerar trabalho e poupar trabalho.
- Alerta acionável. O aviso chega onde a equipe já está, com o resumo do que mudou. Alerta que exige abrir, baixar e caçar a mudança manualmente vira ruído — e ruído ensina a equipe a ignorar o robô.
O produto do monitor não é o aviso. É a diferença: o que exatamente mudou entre ontem e hoje.
As decisões que definem se o robô é confiável
O esqueleto acima qualquer um monta num fim de semana. O que separa um monitor de produção de um script frágil são quatro decisões:
O que comparar. Comparar a página HTML inteira gera falso positivo em cada banner rotativo ou timestamp de rodapé. O Sentinela compara o que importa: a lista de documentos e o conteúdo deles — não o invólucro visual do site. Regra geral: quanto mais perto do dado (e mais longe do layout) a comparação, menos alarme falso.
Onde guardar o estado. A memória do robô (o que já foi visto, hash e versão de cada documento) precisa sobreviver a reinícios e ser consultável. Qualquer armazenamento durável serve — arquivo estruturado, banco leve; o erro é não ter nenhum e “redescobrir” tudo como novidade a cada execução.
Respeitar a fonte. Intervalo generoso entre requisições, identificar-se no User-Agent, baixar só o que mudou. Um robô educado passa anos funcionando; um agressivo derruba a própria fonte de dados — ou é bloqueado por ela.
Falhar visivelmente. O pior estado de um monitor é parado em silêncio: a equipe confia que “se não apitou, não mudou nada”, enquanto o robô está morto há duas semanas. Erro de rede, mudança de estrutura do site, credencial expirada — tudo isso precisa virar alerta também, distinto do alerta de conteúdo. Monitor sem heartbeat é falsa segurança.
O caso real: por que desktop, por que Java
O Sentinela roda como aplicação desktop em Java dentro do ambiente da equipe que o usa — sem depender de nuvem, sem dado operacional saindo do perímetro da empresa. Para o contexto (setor elétrico, equipes de operação, documentos internos sensíveis), essa foi a decisão certa: a infraestrutura já existia, e o robô fica onde o usuário está.
O mesmo padrão portaria para um serviço agendado num servidor ou numa VPS sem mudar nenhum dos quatro estágios — a arquitetura é a mesma; muda o lugar onde ela dorme entre uma varredura e outra.
Por onde começar o seu
Se você monitora alguma fonte oficial manualmente hoje, o caminho mínimo é: escolha uma página que a equipe confere por obrigação, escreva o coletor que extrai dela só a lista que importa (título, data, link de cada documento), guarde essa lista e diffe contra a próxima execução. Só isso — detecção de novidade com estado — já elimina a conferência manual. O diff de conteúdo e os alertas ricos vêm depois, quando o básico provar valor.
O teste de sucesso é simples: no dia em que a fonte publicar algo novo, quem fica sabendo primeiro — a sua equipe ou o concorrente que ainda confere no braço?



