feat: migra pipelines de dados do Prefect 0 para o Prefect 3 - #1553
Conversation
|
Important Review skippedToo many files! This PR contains 287 files, which is 137 over the limit of 150. To get a review, narrow the scope: ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (287)
You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThis PR executes a comprehensive migration of the Prefect orchestration framework from 0.x/2.x to Prefect 3. Changes span dependency updates, utilities refactoring into focused modules, deployment infrastructure (Docker image, CI/CD workflows, deployment scripts), shared task updates, and individual flow migrations with renamed objects and inline scheduling. ChangesPrefect 3 Migration
Sequence DiagramssequenceDiagram
participant dev as Developer
participant gh as GitHub
participant deploy as deploy_flows.py
participant prefect as Prefect API
participant gcs as GCS/Storage
gh->>gh: Push to main or feat/prefect3
gh->>deploy: Trigger cd-prefect3 workflow
deploy->>deploy: load_flows_from_file(path)
deploy->>prefect: flow.from_source(repo, branch).deploy(pool_name, schedule)
prefect->>gcs: Store flow definition
prefect-->>deploy: deployment_id
deploy-->>gh: Success/fail exit status
sequenceDiagram
participant Flow as Prefect Flow
participant Task as run_dbt task
participant dbtRunner as dbtRunner
participant GCS as GCS Artifacts
Flow->>Task: run_dbt(dataset_id, model)
Task->>Task: Validate dbt_command
Task->>Task: Resolve model path
Task->>dbtRunner: invoke(run_results_path, ...)
dbtRunner-->>Task: InvocationResult
Task->>GCS: Upload dbt artifacts (finally block)
Task-->>Flow: Success or raise exception
Estimated code review effort🎯 4 (Complex) | ⏱️ ~75 minutes Possibly related issues
Suggested labels
✨ Finishing Touches🧪 Generate unit tests (beta)
|
|
@folhesgabriel esse pull request tem conflitos 😩 |
| """Cria/atualiza o `Update` ligado ao `RawDataSource`.""" | ||
| ``` | ||
|
|
||
| Cada método é nomeado pela entidade que toca. Quem ler o flow entende imediatamente qual campo no Django está sendo escrito. |
f9918fb to
6d4dbc2
Compare
|
@folhesgabriel esse pull request tem conflitos 😩 |
6d4dbc2 to
63e091b
Compare
63e091b to
a80f8e8
Compare
1192297 to
7c9cb40
Compare
1a258d1 to
6c2e749
Compare
|
@folhesgabriel esse pull request tem conflitos 😩 |
6c2e749 to
a15094c
Compare
|
@folhesgabriel esse pull request tem conflitos 😩 |
a15094c to
85068be
Compare
ecd2ce0 to
5d2d54f
Compare
for more information, see https://pre-commit.ci
Migração Prefect 0 → Prefect 3
Migração completa da infraestrutura e dos flows de orquestração de dados da Base dos Dados do Prefect 0.15 para o Prefect 3, rodando em Kubernetes (GKE). Este PR vai direto para
maine substitui integralmente a stack de orquestração em produção.Commits
`feat: configura imagem Docker, CI/CD e tooling de deploy para Prefect 3`
Docker image (`Dockerfile.prefect3` + `entrypoint.sh`):
Dependências (`pyproject.toml` / `uv.lock`): atualizadas para Python 3.12 — `PyYAML >=6.0.1`, `lxml >=4.9.4`, `grpcio >=1.59.0`, `shapely >=2.0.2`, `pymssql >=2.3.0`, `google-auth >=2.23.0`
CI/CD (`.github/workflows/`):
Deploy script (`.github/scripts/deploy_flows.py`): descobre flows importando dinamicamente cada `datasets/*/flows.py`; pula arquivos Prefect 0 automaticamente (`ImportError` em `from prefect import Parameter`); aceita `--pool`, `--branch` e `--files` para deploys pontuais.
`refactor: divide utils.py em módulos especializados para Prefect 3`
O `utils.py` original (1 033 linhas, API Prefect 0) é substituído por cinco módulos com responsabilidade única:
Mudanças de comportamento relevantes:
`feat: introduz camada register_* para atualização de cobertura temporal`
Substitui o meta-flow `update_temporal_coverage` do Prefect 0 por uma biblioteca Python tipada e testável que os flows chamam diretamente como `@tasks` do Prefect 3.
Arquitetura (`pipelines/utils/metadata/`):
`utils_async.py` deletado — zero callers confirmados por grep. Equivalência tipo-8 verificada via testes: nova lógica de cobertura == output legado em todos os casos.
`feat: migra todos os datasets do Prefect 0 para o Prefect 3`
46 datasets migrados. Mudanças estruturais aplicadas em todos:
Tasks movidas de `datasets/` para `crawler/` para evitar o trigger do `datasets/init.py` que importava todos os flows Prefect 0 e quebrava o ambiente Prefect 3.
Flows deprecados removidos: `br_b3_cotacoes`, `br_mercadolivre_ofertas`, `br_mg_belohorizonte_smfa_iptu`, `br_ons_avaliacao_operacao`, `br_ons_estimativa_custos`, `cross_update`, `mundo_transfermarkt_competicoes`, `mundo_transfermarkt_competicoes_internacionais`, `world_sofascore_competicoes_futebol`
Datasets migrados: `br_anatel_banda_larga_fixa`, `br_anatel_telefonia_movel`, `br_anp_precos_combustiveis`, `br_ans_beneficiario`, `br_bcb_agencia`, `br_bcb_estban`, `br_bcb_sicor`, `br_bcb_taxa_cambio`, `br_bcb_taxa_selic`, `br_bd_indicadores`, `br_bd_siga_o_dinheiro`, `br_camara_dados_abertos` (26 tabelas), `br_cgu_beneficios_cidadao`, `br_cgu_cartao_pagamento`, `br_cgu_emendas_parlamentares`, `br_cgu_licitacao_contrato`, `br_cgu_pessoal_executivo_federal`, `br_cgu_servidores_executivo_federal`, `br_cnj_improbidade_administrativa`, `br_cvm_administradores_carteira`, `br_cvm_fi`, `br_cvm_oferta_publica_distribuicao`, `br_denatran_frota`, `br_fgv_igp`, `br_ibge_inpc`, `br_ibge_ipca`, `br_ibge_ipca15`, `br_ibge_pnadc`, `br_inmet_bdmep`, `br_me_caged`, `br_me_cnpj`, `br_me_comex_stat`, `br_me_rais`, `br_mp_pep`, `br_ms_cnes`, `br_ms_sia`, `br_ms_sih`, `br_ms_sinan`, `br_poder360_pesquisas`, `br_rf_cafir`, `br_rf_cno`, `br_rj_isp_estatisticas_seguranca`, `br_sfb_sicar`, `br_stf_corte_aberta`, `br_tse_eleicoes`, `fundacao_lemann`
`chore: ajusta workflows de CI/CD — desativa P0 e restringe P3 para main`
Workflows Prefect 0 desativados (trigger alterado para `workflow_dispatch`):
Workflows Prefect 3 corrigidos (triggers restritos a `main`):
Estado dos flows em prod
Detalhes em `docs/infraestrutura/prefect/migracao-prefect-3/` no repositório `basedosdados/manual-equipe-dados`.