Skip to content

Diário — 25/09/2026 ​

Presentes: Luis (@Luidooo), Bruno (@BrunoBReis), Moura (@thegm445), Iago (@iagorrr)

Pauta: entendimento do domínio, decisão sobre o OLTP, criação do repositório e abertura das frentes de trabalho.


1. De onde partimos ​

Recebemos da professora Carla um conjunto de insumos sem um enunciado formal do projeto — um áudio de briefing, duas planilhas, duas imagens de arquitetura e alguns links. A primeira tarefa foi literalmente descobrir qual é o trabalho.

Insumos levantados:

InsumoO que trouxe
Áudio de briefing (~8 min)O contexto da pesquisa, quem é a pesquisadora, e a restrição de arquitetura
Cópia_bancos_dados_Carla_Rocha.xlsxOs dados que a pesquisadora produziu à mão
projetoengenhariadedadosbd2.xlsxA planilha de acompanhamento da disciplina (7 abas a preencher)
Imagens de arquiteturaGovHub: data lakehouse e a proposta de agentes com RAG
Brasil Participativo, GovHub, plano de ensinoFontes e referência arquitetural

2. O que é o projeto ​

Os conselhos nacionais de participação social são órgãos paritários onde sociedade civil e governo decidem juntos sobre política pública. Eles são autogeridos — e é daí que vem o problema: se ninguém convoca a reunião, o conselho para de funcionar sem que isso seja registrado em lugar nenhum. Ele não é extinto nem noticiado. Apenas silencia.

A professora Lizandra Serafim (UFPB) pesquisa a produção decisória desses conselhos desde 2003. O método dela é ler o Diário Oficial da União ato por ato, anotar autor e tema, e classificar cada decisão numa tipologia de cinco categorias (DEF, FISC, GEST, AUTO, IP) que ela ajudou a desenvolver.

Em vinte anos de trabalho manual, cobriu cinco conselhos. Existem entre oitenta e cem.

O objetivo declarado dela é um observatório que dê uma medida de vitalidade a cada conselho: está deliberando sobre política, ou apenas se auto-administrando? Está ativo, ou parado há meses?

3. Levantamento dos dados existentes ​

As planilhas da pesquisadora ​

AbaConteúdoLinhas
Conselhos mapeados no DOULista de conselhos125
Dicionário tipologiaAs 5 categorias, com definição5
CNASAtos classificados, 2003–2022366
CONAMAAtos classificados, 1984–202299
CONCIDADESAtos classificados848
CONDRAFAtos classificados951
CNPIRAtos classificados374

Total: 2.638 atos classificados à mão.

Errata (26/09): a contagem acima está errada. Os números da tabela são as linhas formatadas de cada aba (o max_row do openpyxl menos 1), e a maioria delas não tem nenhum valor. As linhas com dado são 215: CNAS 53, CONAMA 98, CONCIDADES 28, CONDRAF 24, CNPIR 12, datadas entre 2003 e 2020 (o CONAMA vai de 2003 a 2006, não de 1984). O arquivo é o mesmo, byte a byte, que estava no repositório antigo. Ver o diário de 26/09, seção da #3.

Duas observações que mudaram o rumo do projeto:

  1. As abas têm esquemas divergentes. CNAS tem AUTOR; ConCidades tem REF_EMI_CON e TEMA_RESUM; CNPIR tem só 6 colunas. Isso não é descuido — é o método dela evoluindo ao longo de duas décadas. O esquema daquelas planilhas descreve a história do trabalho manual, não a estrutura do fenômeno.

  2. A lista de 125 conselhos tem 96 nomes distintos, medido normalizando caixa, acento e sigla entre parênteses — e ainda restam duplicatas que essa normalização não pega (renomeações legais, grafias múltiplas). No próprio áudio a professora hesita sobre o número: "tem 90, tá 120, né?". Nem a fonte sabe quantos conselhos existem.

A fonte primária: Diário Oficial da União ​

Pesquisamos como o DOU disponibiliza os atos de forma estruturada. Resultado verificado em fonte primária:

  • O INLABS (Imprensa Nacional) publica as edições completas em XML desde 01/01/2020. Gratuito, exige cadastro.
  • Entrega um ZIP por seção por dia; dentro, um XML por matéria.
  • Resoluções de conselho ficam na Seção 1 (DO1) — cerca de 300 matérias por dia útil, de um total de ~3.300 no DOU inteiro.
  • Volume: ~2,5 GB de XML por ano. O acervo 2020→hoje cabe num notebook.

O achado mais importante: cada matéria carrega um campo artCategory com a hierarquia completa do órgão emissor, separada por barra:

Ministério do Meio Ambiente e Mudança do Clima/Conselho Nacional do Meio Ambiente
Ministério da Educação/Conselho Nacional de Educação/Câmara de Educação Superior

Identificar qual conselho emitiu um ato é um split('/') num campo estruturado — não exige processamento de linguagem natural. Isso concentra todo o esforço de classificação onde está o valor científico: a tipologia.

Três armadilhas mapeadas:

  • Nome de órgão não é estável no tempo. O CONAMA aparece sob "Ministério do Meio Ambiente" antes de 2023 e "Ministério do Meio Ambiente e Mudança do Clima" depois. Casar por string literal perde a série histórica.
  • O conselho não fica sempre no mesmo nível da hierarquia. E conselhos profissionais (CFM, CFF, CREF) penduram em "Entidades de Fiscalização do Exercício das Profissões Liberais" — provavelmente fora do escopo, por serem corporativos e não participativos.
  • Não existe dicionário de dados oficial do DOU. A própria Imprensa Nacional declara que "será disponibilizado em data a ser definida". O esquema que temos é engenharia reversa, corroborada pelo Ro-dou, projeto do Ministério da Gestão que já carrega o INLABS em Postgres.

4. Duas confusões desfeitas na discussão ​

OLTP não é a camada bronze ​

Surgiu na conversa a ideia de que modelar o DOU produziria "o OLTP, que seria a camada bronze". São eixos diferentes, e misturá-los trava a modelagem:

  • OLTP / OLAP classifica a carga de trabalho. OLTP é transação pequena, por chave, normalizado, ACID, representando o estado atual.
  • Bronze / Silver / Gold classifica o estágio de refino dentro do lado analítico. Bronze é o dado bruto recém-aterrissado — e bronze é OLAP. Ninguém dá UPDATE ... WHERE id = ? numa tabela bronze.

O teste prático: o dado nasce aqui, por um evento único, num instante único? Se já existia em outro lugar e está sendo copiado, é ingestão, não transação.

As planilhas mudaram de papel ​

A proposta inicial era derivar o esquema do banco das cinco abas da pesquisadora. Isso foi corretamente contestado na discussão: as cinco abas são amostra por esgotamento humano, não por desenho amostral. Modelar o banco a partir delas seria petrificar o limite de capacidade de uma pessoa dentro do sistema.

O esquema passa a vir do DOU. Mas as planilhas não foram descartadas — mudaram de função, para algo mais valioso:

O DOU nos dá o esquema. As planilhas nos dão o rótulo.

São 2.638 atos com tipologia atribuída por especialista. É o único jeito de provar com número que a classificação automática funciona. Sem elas, para validar o modelo alguém teria que rotular na mão — e essa pessoa viraria a pesquisadora.

5. Decisões tomadas ​

O OLTP do projeto é o sistema de curadoria ​

Somos um observatório: consumimos dado de terceiro. O DOU é o sistema de origem, mas é OLTP da Imprensa Nacional, não nosso. Copiar o DOU para o Postgres não o torna transacional.

Decidimos que nosso OLTP é a aplicação de curadoria — onde uma pessoa revisa e confirma a classificação de cada ato. É transacional de verdade: escrita por chave, ACID, estado atual, e o dado nasce ali (o julgamento humano não existe em nenhuma fonte antes). Os 2.638 atos da pesquisadora entram como carga inicial.

Argumento central: a fronteira entre DEF e GEST é interpretação jurídica. Um observatório totalmente automático numa classificação dessa delicadeza não sobrevive ao primeiro contato com a pesquisadora. Este é o único desenho em que o produto continua útil quando o classificador erra — e em que a divergência entre proposta automática e confirmação humana vira, ela própria, a métrica de acurácia.

Registrado como ADR 0001 (issue #5). Consequência negativa aceita: teremos que construir e manter uma interface de curadoria, que não estava no escopo original.

Arquitetura: GovHub adaptado, com restrição de operação ​

A referência é o GovHub (Airflow → armazenamento → dbt → consumo → catálogo). Mas há uma restrição explícita vinda do briefing: a pesquisadora é quem vai ter que manter isso rodando. A orientação foi ser o mais barato e simples de operar possível — a sugestão levantada foi que o banco nunca fique exposto, e que um job gere um JSON de indicadores publicado como site estático, atualizado por uma rotina diária.

Isso atende a camada de consumo e o ETL reverso exigidos pela disciplina, sem exigir BI nem backend para manter.

O censo de conselhos não pode sair do DOU ​

O DOU só mostra quem publicou. Conselho que não publica há dois anos é precisamente o que queremos detectar. Se o denominador vier do DOU, o conselho morto some da conta e o indicador mente.

A ausência de publicação é o dado mais importante do observatório — e ela só é mensurável contra um cadastro independente.

6. O que segue em aberto ​

#DecisãoPor que trava as outras
1Quem é o nosso OLTPDecidido nesta sessão — ADR 0001
2De onde vem o censo de conselhosSem denominador independente, o indicador de silêncio não fecha
3Como classificar a tipologia automaticamenteÉ o valor científico; temos 2.638 exemplos rotulados para medir
4Onde mora a camada analíticaCritério de desempate é operacional, não técnico
5Formato da camada de consumoDefine o produto final

7. Encaminhamentos ​

Repositório criado: https://github.com/Luidooo/conselhos-vivos — público, com a squad como colaboradores.

Seis issues abertas, segmentadas por fronteira de dado (não por camada, para evitar que todo mundo mexa nos mesmos arquivos):

IssueFrenteDependência
#1 Subir o Postgres com docker composeinfra, bloqueante—
#2 Modelar o esquema do OLTP de curadoriamodelagem, bloqueante—
#3 Normalizar as 5 abas da pesquisadoradadoscontrato da #2
#4 Resolver a identidade dos conselhosdadosnenhuma
#5 ADR 0001: escolher o OLTPdocsdecisão tomada
#6 Protótipo do ingestor do INLABSingestão (E2)nenhuma

As issues #4 e #6 não dependem de ninguém e podem começar imediatamente.

Próxima entrega: E1 em 28/09 (adiada de 22/09) — fonte OLTP modelada, esquema versionado, carga reprodutível. O critério que mais vale nota: a plataforma precisa subir do zero, em máquina limpa, com um comando.


Nota sobre uso de IA ​

O levantamento do domínio nesta sessão foi feito com auxílio de Claude Code: transcrição do áudio de briefing, leitura programática das planilhas, e pesquisa da estrutura do DOU/INLABS. Todos os dados numéricos citados acima foram verificados em fonte primária (arquivo aberto, requisição executada ou código-fonte lido) — nenhum é estimativa de modelo. Ver AI-USAGE.md.

Projeto Integrado de Banco de Dados 2 — FCTE/UnB, 2026/2.