Módulo: Agencies (agencies)¶
Catálogo centralizado de órgãos governamentais.
Repositório: github.com/destaquesgovbr/agencies
Visão Geral¶
O repositório agencies é a fonte centralizada de dados sobre os órgãos governamentais do Brasil, contendo:
- 156 órgãos catalogados
- 29 tipos diferentes (Ministério, Agência, Instituto, etc.)
- Hierarquia organizacional completa
flowchart TB
AG[agencies] -->|Sincronização| SC[scraper]
AG -->|Sincronização| PO[portal]
subgraph "Arquivos"
AG --> A1[agencies.yaml]
AG --> A2[hierarchy.yaml]
end
Estrutura do Repositório¶
agencies/
├── agencies.yaml # Dados completos dos órgãos
├── hierarchy.yaml # Árvore hierárquica
└── README.md
Schema dos Dados¶
agencies.yaml¶
sources:
<agency_key>:
name: <nome_oficial>
parent: <agency_key_pai> # Órgão superior
type: <tipo> # Ministério, Agência, etc.
url: <url_noticias> # URL do feed de notícias
Exemplo¶
sources:
presidencia:
name: Presidência da República
parent: null
type: Presidência
url: https://www.gov.br/planalto/pt-br/acompanhe-o-planalto/noticias
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
anvisa:
name: Agência Nacional de Vigilância Sanitária
parent: saude
type: Agência Reguladora
url: https://www.gov.br/anvisa/pt-br/assuntos/noticias-anvisa
Hierarquia Organizacional¶
hierarchy.yaml¶
presidencia:
- gestao
- fazenda
- saude:
- anvisa
- fiocruz
- hemocentros
- mcti:
- inpe
- inpa
- cnen:
- cdtn
- ien
- ipen
- cultura:
- iphan
- funarte
- biblioteca-nacional
Visualização¶
graph TB
PR[Presidência] --> GE[Gestão]
PR --> FA[Fazenda]
PR --> SA[Saúde]
PR --> MC[MCTI]
PR --> CU[Cultura]
SA --> AN[Anvisa]
SA --> FI[Fiocruz]
MC --> IN[INPE]
MC --> IP[INPA]
MC --> CN[CNEN]
CN --> CD[CDTN]
CN --> IE[IEN]
Estatísticas¶
| Métrica | Valor |
|---|---|
| Total de órgãos | 156 |
| Tipos únicos | 29 |
| Ministérios | ~30 |
| Agências Reguladoras | ~10 |
| Institutos | ~40 |
| Fundações | ~20 |
Principais Órgãos Pais¶
| Órgão | Subordinados |
|---|---|
| MCTI | 21 |
| Gestão | 12 |
| Cultura | 8 |
| Saúde | 7 |
| Fazenda | 5 |
Tipos de Órgãos¶
tipos:
- Presidência
- Ministério
- Secretaria
- Agência Reguladora
- Autarquia
- Fundação
- Instituto
- Empresa Pública
- Sociedade de Economia Mista
- Conselho
- Comissão
# ... 29 tipos no total
Uso no Sistema¶
1. Scraper¶
O scraper usa os dados para:
- Determinar quais sites raspar (URLs)
- Identificar a agência de cada notícia
- Mapear IDs para nomes completos
# scraper/src/scraper/agencies.yaml
agencies:
gestao: Ministério da Gestão e da Inovação em Serviços Públicos
2. Portal¶
O portal usa para:
- Filtros de busca por órgão
- Páginas dedicadas (
/orgaos/[agencyKey]) - Navegação hierárquica
# portal/src/lib/agencies.yaml
sources:
gestao:
name: Ministério da Gestão...
parent: presidencia
type: Ministério
3. Typesense¶
Indexação com campo agency para filtros:
{
"agency": "gestao",
"title": "Nova política de gestão..."
}
Sincronização¶
Situação Atual (Manual)¶
flowchart LR
AG[agencies.yaml] -->|Cópia manual| SC[scraper/agencies.yaml]
AG -->|Cópia manual| PO[portal/agencies.yaml]
AG -->|Cópia manual| SU[scraper/site_urls.yaml]
Processo:
1. Editar agencies/agencies.yaml
2. Copiar manualmente para scraper
3. Copiar manualmente para portal
4. Atualizar site_urls.yaml se necessário
Situação Futura (Automática)¶
flowchart LR
AG[agencies.yaml] -->|GitHub Action| SC[scraper/agencies.yaml]
AG -->|GitHub Action| PO[portal/agencies.yaml]
Meta:
- Push em agencies dispara workflow
- Workflow atualiza automaticamente scraper e portal
- PRs automáticos ou commits diretos
Como Adicionar Novo Órgão¶
1. Editar agencies.yaml¶
sources:
# Adicionar novo órgão
novo-orgao:
name: Nome Oficial do Novo Órgão
parent: orgao-pai # ou null se não tiver
type: Tipo do Órgão
url: https://www.gov.br/novo-orgao/pt-br/noticias
2. Atualizar hierarchy.yaml (se aplicável)¶
orgao-pai:
- outros-subordinados
- novo-orgao # Adicionar aqui
3. Sincronizar (manual por enquanto)¶
# Copiar para scraper
cp agencies.yaml ../scraper/src/scraper/agencies.yaml
# Copiar para portal
cp agencies.yaml ../portal/src/lib/agencies.yaml
# Atualizar site_urls.yaml no scraper
4. Testar¶
# No scraper
python src/main.py scrape --start-date $(date +%Y-%m-%d) --end-date $(date +%Y-%m-%d)
Como Remover Órgão¶
1. Remover de agencies.yaml¶
2. Remover de hierarchy.yaml¶
3. Remover de site_urls.yaml no scraper¶
4. Sincronizar¶
Nota: Notícias existentes no dataset permanecem. Apenas novas raspagens são afetadas.
Como Alterar Hierarquia¶
Exemplo: Mover órgão para outro pai¶
# Antes
mcti:
- inpe
# Depois (mover INPE para outro ministério)
outro-ministerio:
- inpe
Atualizar agencies.yaml¶
inpe:
name: Instituto Nacional de Pesquisas Espaciais
parent: outro-ministerio # Atualizar parent
type: Instituto
Validação¶
Verificações Importantes¶
- [ ] Todos os
parentexistem no arquivo - [ ] Não há ciclos na hierarquia
- [ ] URLs são válidas e acessíveis
- [ ] Nomes estão corretos e oficiais
- [ ] Tipos são consistentes
Script de Validação (futuro)¶
def validate_agencies():
"""Valida consistência do arquivo agencies.yaml"""
# Verificar parents existem
# Verificar URLs acessíveis
# Verificar tipos válidos
pass
Links Relacionados¶
- Componentes Estruturantes - Visão geral
- Módulo Scraper - Uso no scraper
- Módulo Portal - Uso no portal
- Árvore Temática - Outro componente estruturante