Componentes Estruturantes¶
O DestaquesGovbr possui quatro componentes estruturantes que definem a organização dos dados:
- Árvore Temática - Classificação hierárquica de notícias
- Catálogo de Órgãos - Lista de 158 agências governamentais
- PostgreSQL - Fonte de verdade dos dados
- HuggingFace - Distribuição de dados abertos
1. Árvore Temática¶
Visão Geral¶
A árvore temática é uma taxonomia hierárquica de 25 temas principais organizados em 3 níveis, usada para classificar automaticamente as notícias.
Estrutura¶
Nível 1 (Tema) → Nível 2 (Subtema) → Nível 3 (Tópico)
01 - Economia → 01.01 - Pol. Econômica → 01.01.01 - Pol. Fiscal
→ 01.02 - Fiscalização → 01.02.01 - Fisc. Econômica
02 - Educação → 02.01 - Ensino Básico → 02.01.01 - Ed. Infantil
...
Temas Principais (25)¶
| Código | Tema |
|---|---|
| 01 | Economia e Finanças |
| 02 | Educação |
| 03 | Saúde |
| 04 | Segurança Pública |
| 05 | Meio Ambiente e Sustentabilidade |
| 06 | Ciência, Tecnologia e Inovação |
| 07 | Infraestrutura e Transportes |
| 08 | Cultura, Artes e Patrimônio |
| 09 | Esportes e Lazer |
| 10 | Agricultura, Pecuária e Abastecimento |
| 11 | Indústria e Comércio |
| 12 | Relações Internacionais e Diplomacia |
| 13 | Justiça e Direitos Humanos |
| 14 | Trabalho e Emprego |
| 15 | Desenvolvimento Social |
| 16 | Turismo |
| 17 | Energia e Recursos Minerais |
| 18 | Comunicações e Mídia |
| 19 | Defesa e Forças Armadas |
| 20 | Políticas Públicas e Governança |
| 21 | Legislação e Regulamentação |
| 22 | Eventos Oficiais e Cerimônias |
| 23 | Estatísticas e Dados Públicos |
| 24 | Minorias e Grupos Especiais |
| 25 | Habitação e Urbanismo |
Arquivos¶
A árvore temática está armazenada no PostgreSQL e duplicada em repositórios (sincronização via pipeline):
| Local | Arquivo/Tabela | Formato |
|---|---|---|
| PostgreSQL | tabela themes |
Normalizado (200+ registros) |
| data-platform | src/data_platform/enrichment/themes_tree.yaml |
YAML plano |
| portal | src/lib/themes.yaml |
YAML estruturado |
Formato no Data Platform (themes_tree.yaml)¶
01 - Economia e Finanças:
01.01 - Política Econômica:
- 01.01.01 - Política Fiscal
- 01.01.02 - Autonomia Econômica
- 01.01.03 - Análise Econômica
01.02 - Fiscalização e Tributação:
- 01.02.01 - Fiscalização Econômica
- 01.02.02 - Tributação e Impostos
Formato no Portal (themes.yaml)¶
themes:
- label: Economia e Finanças
code: "01"
children:
- label: Política Econômica
code: "01.01"
children:
- label: Política Fiscal
code: "01.01.01"
- label: Autonomia Econômica
code: "01.01.02"
Uso no Sistema¶
- Classificação (Enrichment Worker): AWS Bedrock (Claude 3 Haiku) classifica cada notícia nos 3 níveis
- Filtros (Portal): Usuários filtram por tema no portal
- Navegação: Páginas dedicadas por tema (
/temas/[themeLabel]) - Análise: Agregação de notícias por tema no dashboard
Meta Futura¶
Criar repositório dedicado destaquesgovbr-themes para:
- Centralizar a árvore temática
- Automatizar sincronização entre scraper e portal
- Versionamento e histórico de mudanças
2. Catálogo de Órgãos¶
Visão Geral¶
O catálogo contém 156 órgãos governamentais com metadados e hierarquia organizacional.
Estrutura de Dados¶
Cada órgão possui:
name- Nome oficialparent- Órgão superior (para hierarquia)type- Tipo (Ministério, Agência, Instituto, etc.)url- URL do feed de notícias
Arquivos¶
| Local | Arquivo/Tabela | Conteúdo |
|---|---|---|
| PostgreSQL | tabela agencies |
Dados dos 158 órgãos (normalizado) |
| agencies | agencies.yaml |
Dados fonte dos órgãos |
| agencies | hierarchy.yaml |
Árvore hierárquica |
| portal | src/lib/agencies.yaml |
Cópia (sincronização manual) |
| data-platform | src/data_platform/scrapers/agencies.yaml |
Mapeamento ID → Nome |
| data-platform | src/data_platform/scrapers/site_urls.yaml |
URLs de raspagem |
Exemplo de Entrada¶
# agencies.yaml
sources:
gestao:
name: Ministério da Gestão e da Inovação em Serviços Públicos
parent: presidencia
type: Ministério
url: https://www.gov.br/gestao/pt-br/assuntos/noticias
inpe:
name: Instituto Nacional de Pesquisas Espaciais
parent: mcti
type: Instituto
url: https://www.gov.br/inpe/pt-br/assuntos/noticias
Hierarquia Organizacional¶
# hierarchy.yaml
presidencia:
- gestao
- mcti:
- inpe
- inpa
- cnen:
- cdtn
- ien
- saude:
- anvisa
- fiocruz
Estatísticas¶
- Total de órgãos: 156
- Tipos únicos: 29
-
Principais pais:
-
MCTI: 21 subordinados
- Gestão: 12 subordinados
- Cultura: 8 subordinados
Uso no Sistema¶
- Scraping: Determina quais sites raspar e como identificar a agência
- Filtros: Usuários filtram por órgão no portal
- Navegação: Páginas dedicadas por órgão (
/orgaos/[agencyKey]) - Hierarquia: Visualização da estrutura organizacional
Meta Futura¶
Automatizar sincronização:
- Editar apenas em
agencies - GitHub Action publica automaticamente no scraper e portal
- Possível interface web para gestão
3. PostgreSQL (Fonte de Verdade)¶
Visão Geral¶
O PostgreSQL (Cloud SQL) é a fonte de verdade central de todos os dados do sistema.
Instância: destaquesgovbr-postgres (southamerica-east1)
Características¶
| Característica | Valor |
|---|---|
| Documentos | ~300.000+ |
| Tabelas | 4 (agencies, themes, news, sync_log) |
| Atualização | Diária (4AM UTC) |
| Backup | Diário com PITR 7 dias |
→ Veja detalhes completos em postgresql.md
4. HuggingFace (Distribuição)¶
Visão Geral¶
O dataset no HuggingFace é a camada de distribuição de dados abertos, sincronizada diariamente a partir do PostgreSQL.
URL: huggingface.co/datasets/nitaibezerra/govbrnews
Características¶
| Característica | Valor |
|---|---|
| Documentos | ~300.000+ |
| Sincronização | Diária (6AM UTC via Airflow) |
| Formato | Parquet (shards incrementais) |
| Versionamento | Automático pelo HF |
Schema do Dataset¶
Identificação:
| Campo | Tipo | Origem | Descrição |
|---|---|---|---|
unique_id |
string | Scraper | MD5(agency + published_at + title) |
agency |
string | Scraper | Identificador do órgão |
Datas:
| Campo | Tipo | Origem | Descrição |
|---|---|---|---|
published_at |
timestamp | Scraper | Data/hora de publicação (ISO 8601, UTC) |
updated_datetime |
timestamp | Scraper | Data/hora de atualização |
extracted_at |
timestamp | Scraper | Data/hora da extração |
Conteúdo Principal:
| Campo | Tipo | Origem | Descrição |
|---|---|---|---|
title |
string | Scraper | Título da notícia |
subtitle |
string | Scraper | Subtítulo (quando disponível) |
editorial_lead |
string | Scraper | Lead editorial / linha fina |
url |
string | Scraper | URL original |
content |
string | Scraper | Conteúdo em Markdown |
Mídia:
| Campo | Tipo | Origem | Descrição |
|---|---|---|---|
image |
string | Scraper | URL da imagem principal |
video_url |
string | Scraper | URL de vídeo incorporado |
Classificação Original:
| Campo | Tipo | Origem | Descrição |
|---|---|---|---|
category |
string | Scraper | Categoria do site |
tags |
list | Scraper | Tags/keywords |
Enriquecimento AI (AWS Bedrock):
| Campo | Tipo | Origem | Descrição |
|---|---|---|---|
theme_1_level_1_code |
string | Enrichment Worker | Código tema L1 (ex: "01") |
theme_1_level_1_label |
string | Enrichment Worker | Label tema L1 (ex: "Economia e Finanças") |
theme_1_level_2_code |
string | Enrichment Worker | Código tema L2 (ex: "01.01") |
theme_1_level_2_label |
string | Enrichment Worker | Label tema L2 |
theme_1_level_3_code |
string | Enrichment Worker | Código tema L3 (ex: "01.01.01") |
theme_1_level_3_label |
string | Enrichment Worker | Label tema L3 |
most_specific_theme_code |
string | Enrichment Worker | Tema mais específico disponível |
most_specific_theme_label |
string | Enrichment Worker | Label mais específico |
summary |
string | Enrichment Worker | Resumo gerado por AWS Bedrock (Claude 3 Haiku) |
Arquivos Gerados¶
O pipeline gera automaticamente:
govbrnews/
├── data/
│ └── train-00000-of-00001.parquet # Dataset principal
├── govbr_news_dataset.csv # CSV completo
├── agencies/
│ ├── gestao_news_dataset.csv # CSV por agência
│ ├── saude_news_dataset.csv
│ └── ...
└── years/
├── 2024_news_dataset.csv # CSV por ano
├── 2025_news_dataset.csv
└── ...
Uso no Sistema¶
- Comunidade: Download para análises externas
- Pesquisadores: Estudos acadêmicos
- Streamlit: Visualizações públicas
- Dados abertos: Acesso transparente aos dados governamentais
Dataset Reduzido¶
Existe também uma versão reduzida com apenas 4 colunas para análises rápidas:
URL: nitaibezerra/govbrnews-reduced
Diagrama de Relacionamentos¶
graph TB
subgraph "Componentes Estruturantes"
AT[Árvore Temática<br/>25 temas × 3 níveis]
CO[Catálogo de Órgãos<br/>158 agências]
PG[(PostgreSQL<br/>Fonte de Verdade)]
HF[(HuggingFace<br/>Distribuição)]
end
subgraph "Uso no Sistema (Event-Driven)"
SC[Scraper]
EW[Enrichment Worker<br/>AWS Bedrock]
EMB[Embeddings Worker]
TSW[Typesense Sync Worker]
TS[Typesense]
PO[Portal]
end
CO -->|URLs de raspagem| SC
AT -->|Prompt para classificação| EW
SC -->|INSERT + Pub/Sub| PG
EW -->|UPDATE temas + summary| PG
EMB -->|UPDATE embeddings| PG
TSW -->|fetch + upsert| TS
PG -->|Sync diário| HF
TS -->|Busca| PO
AT -->|Filtros| PO
CO -->|Filtros| PO
Sincronização¶
Dados (Automatizado)¶
Scraper → PostgreSQL → Typesense (sync diário)
→ HuggingFace (DAG Airflow 6AM UTC)
Componentes Estruturantes (Manual)¶
agencies.yaml → Cópia manual → portal/agencies.yaml
→ data-platform/agencies.yaml
themes_tree.yaml → Cópia manual → portal/themes.yaml
→ PostgreSQL (via script)
Meta Futura¶
agencies repo → GitHub Action → portal + data-platform + PostgreSQL
themes repo → GitHub Action → portal + data-platform + PostgreSQL