Skip to content

Adiciona validação automática do catálogo (CI, pre-commit e ferramentas locais) - #157

Open
opastorello wants to merge 20 commits into
osintbrazuca:mainfrom
opastorello:workflow-validacao
Open

opastorello wants to merge 20 commits into
osintbrazuca:mainfrom
opastorello:workflow-validacao

Conversation

@opastorello

@opastorello opastorello commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Tipo de Mudança

  • Nova fonte
  • Correção de link
  • Melhoria de documentação
  • Outra: validação automática do catálogo (CI, pre-commit e ferramentas locais)

Descrição

Adiciona validação automática para o que o CONTRIBUICAO.md já exige, sem nenhuma dependência além do Python 3:

  • .github/workflows/validar-dataset.yml: em pull request e push na main (quando *.md, data/** ou tools/** mudam) roda build_dataset.py --check, falha se houver fonte sem link ou sem classificação (--report) e aplica as regras de formatação.
  • tools/validar_docs.py: erros para travessão fora de crases, menu de navegação diferente entre os documentos e link interno sem âncora; com --avisos, lista URLs repetidas entre fontes e URLs em http:// (só curadoria, não bloqueia).
  • tools/hooks/pre-commit: as mesmas verificações antes do commit, ativado com git config core.hooksPath tools/hooks.
  • tools/checar_links.py: verificação local de todas as URLs do catálogo (ok/redirect/bloqueio/offline/erro/modelo). Fica fora do CI de propósito: sites .gov.br bloqueiam robôs com frequência (102 de 1037 URLs deram 403 na primeira execução).
  • CONTRIBUICAO.md: seções "Validação automática" e "Ferramentas de curadoria (só local)".

Testado no GitHub Actions do fork: passa no estado atual do catálogo e falha no passo certo com um commit de teste contendo travessão (opastorello#1).

Depende do #156: a branch parte dele porque o CI só passa com o dataset regenerado e as 4 fontes sem link corrigidas lá. Até o merge do #156, os 18 commits dele aparecem aqui também; depois restam apenas os 2 commits desta mudança (d80ac78 e 0566c84).

Checklist

  • Testei todos os links adicionados
  • Segui o padrão de formatação do projeto
  • Verifiquei que não há duplicatas
  • Rodei python3 tools/build_dataset.py e incluí os JSON atualizados
  • Li as diretrizes de contribuição
  • Minhas mudanças respeitam a LGPD

Sincroniza sources.json e index.json com o README atual: linhas de
referência deslocadas e URL nova do Comprovante de Situação Cadastral
de Pessoa Jurídica. Faz tools/build_dataset.py --check voltar a passar.
- Adiciona URL oficial da Consulta Restituição do Imposto de Renda
- Remove Extrato do BPC e Câmera do Aeroporto da Pampulha, que eram
  apenas placeholders ("- ...") sem URL; Meu INSS já cobre o extrato
- Rebaixa "Painéis de Telecomunicações (ANATEL)" para h4, pois é título
  de agrupamento dos painéis seguintes, não uma fonte
- Consultar Zonas Eleitorais por UF estava como h2 e virava categoria
  própria; passa a h3 dentro de Registros Eleitorais, com descrição
- Regenera o dataset
Classifica manualmente as 6 fontes que a heurística não alcançava
(MCTI, Embrapii, Finep, Suframa, Sinesp Cidadão e empreendimentos por
dentro) e corrige duas em que ela ficava imprecisa: Consulta Restituição
do IR (só CPF) e Zonas Eleitorais por UF (busca por UF, não por eleitor).
O relatório do build passa a não ter fontes 'indefinido'.
Pesquisa pública de corretores de seguros (pessoa natural e jurídica)
habilitados pela SUSEP, com filtros por tipo de pessoa, CNPJ, nome,
produto e situação do registro. Entra na categoria de buscas por
CPF/CNPJ/registro, com override de classificação e dataset regenerado.
Certidões por CPF ou CNPJ (contas julgadas irregulares, inabilitados,
licitantes inidôneos e processos) e listas públicas pesquisáveis, na
categoria de Transparência Pública. Inclui override e dataset
regenerado.
…rreta

O bloco de exemplos da API de Dados estava abaixo de TCU - Consulta de
Acórdãos, e o parser atribuía o link api-de-dados ao TCU. Passa a ficar
sob Portal da Transparência - API de Dados, sem alteração de conteúdo.
Regenera o dataset.
Consultas públicas por CPF ou CNPJ de dívida ativa da União, débitos
trabalhistas e regularidade do FGTS, sem cadastro. Inclui overrides e
dataset regenerado.
Certidão negativa de alistamento, certidão simplificada de dados e
biometria, certidão de ausência de débito da última eleição e validação
de documentos da Justiça Eleitoral. Regenera o dataset.
Consulta pública de impedidos de contratar com a Administração Pública
por CNPJ, CPF ou razão social. Inclui override e dataset regenerado.
Consultas públicas de instituições autorizadas pelo BC e de protestos
em cartório por CPF ou CNPJ. Inclui overrides e dataset regenerado.
Pesquisa pública do SEI do CADE por número, texto, interessado e tipo
de processo. Regenera o dataset.
Consulta de regularidade no Cadastro Técnico Federal por CPF ou CNPJ.
Inclui override e dataset regenerado.
Lista pública em PDF dos empregadores flagrados em fiscalização.
Inclui override e dataset regenerado.
Relatórios contábeis e prudenciais do Banco Central por instituição.
Regenera o dataset.
Busca de OSCs por nome ou CNPJ, com projetos e recursos públicos
recebidos. Inclui override e dataset regenerado.
API pública de metadados e movimentações processuais de todos os
tribunais, com documentação na wiki do CNJ. Inclui override e dataset
regenerado.
Busca nacional de médicos por nome, UF, CRM e especialidade.
Regenera o dataset.
O título repetia o nome do Ministério do Meio Ambiente, mas descrição
e URL (dados.turismo.gov.br) são do Ministério do Turismo. Regenera o
dataset.
…ntas locais

- .github/workflows/validar-dataset.yml: em PR e push na main, roda
  build_dataset.py --check, falha em fonte sem link ou sem classificação
  e aplica as regras de formatação via tools/validar_docs.py
- tools/hooks/pre-commit: mesmas verificações antes do commit, ativado
  com git config core.hooksPath tools/hooks
- tools/validar_docs.py: travessão fora de crases, menu de navegação
  diferente entre documentos e link interno sem âncora; com --avisos
  lista URLs repetidas e em http:// para curadoria
- tools/checar_links.py: verificação local de todas as URLs do catálogo,
  fora do CI por causa de bloqueios anti-robô em sites .gov.br
- CONTRIBUICAO.md: documenta a validação e as ferramentas
URLs com {VALOR}, SEU_ALVO, exemplo ou zeros são modelos a preencher e
nunca respondem; passam a ser rotuladas como 'modelo' e não requisitadas.
Detectado na primeira execução completa, em que 18 delas apareciam
como offline.
@MrCl0wnLab MrCl0wnLab self-assigned this Sep 2, 2026
@MrCl0wnLab MrCl0wnLab added the tools Ferramentas label Sep 2, 2026
@MrCl0wnLab

Copy link
Copy Markdown
Collaborator

Olá @opastorello,

Obrigado pela contribuição.
Tenho que validar #156, assim que terminar começo o processo aqui em fazer codereview das tools adicionadas.

Obrigado pela dedicação, vai ajudar muito.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

tools Ferramentas

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants