basedosdados / basedosdados/pipelines
[fix] Logs de _upload_to_gcs não indicam o ambiente (dev/prod)
- Dominant language
- Python
- Stars
- 49
- Forks
- 22
- Avg merge
- 19h 31m
- Merged PRs (30d)
- 165
Description
# _upload_to_gcs não indicam o ambiente (dev/prod)
## Problema
A função `_upload_to_gcs` em `pipelines/utils/tasks.py` imprime mensagens com o nome completo da tabela staging, mas sem indicar em qual ambiente está rodando. Como a função é chamada tanto para `basedosdados-dev` quanto para `basedosdados`, os logs ficam ambíguos — especialmente quando um flow de prod executa o gate em dev antes de materializar em prod.
Exemplo de log atual ao rodar em dev:
```
Tabela já existe: basedosdados-dev.dataset_id.table_id
```
O nome do projeto aparece no `table_full_name`, mas não há nenhuma indicação explícita de "ambiente". Quem lê o log no Prefect não consegue distinguir facilmente se aquela etapa é o gate de dev ou a materialização de prod.
## Linhas afetadas
`pipelines/utils/tasks.py`:
- Linha 154: `print(f"Tabela criada: {tb.table_full_name['staging']}\n{storage_link}")`
- Linha 157: `print(f"Tabela já existe: {tb.table_full_name['staging']}")`
- Linha 171: `print(f"Tabela anterior removida: {tb.table_full_name['staging']}")`
- Linha 185: `print(f"Tabela recriada: {tb.table_full_name['staging']}\n{storage_link}")`
- Linha 200: `print(f"Upload concluído: gs://{bucket_name}/staging/{dataset_id}/{table_id}")`
## Proposta
Derivar o ambiente a partir do `bucket_name` (que já é `basedosdados-dev` ou `basedosdados`) e prefixar todas as mensagens:
```python
env = "dev" if "dev" in bucket_name else "prod"
# exemplos de mensagens resultantes
print(f"[{env}] Tabela criada: {tb.table_full_name['staging']}\n{storage_link}")
print(f"[{env}] Tabela já existe: {tb.table_full_name['staging']}")
print(f"[{env}] Upload concluído: gs://{bucket_name}/staging/{dataset_id}/{table_id}")
```
Resultado nos logs:
```
[dev] Tabela já existe: basedosdados-dev.dataset_id.table_id
[prod] Upload concluído: gs://basedosdados/staging/dataset_id/table_id
```
Isso torna imediatamente claro em qual etapa do fluxo (gate dev ou materialização prod) cada mensagem foi emitida.
# Remover os logs de upload dos testes .sql
Contributor guide
Research direction
Start in pipelines/utils/tasks.py at _upload_to_gcs and inspect the log statements on lines 154, 157, 171, 185, and 200. Derive the environment from bucket_name and prefix each message, then remove upload logs from the affected .sql tests. Verify that the resulting logs distinguish dev from prod and that the SQL tests remain clean.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- gcp, python
- Domain
- data-engineering, observability, testing-qa
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 74/100