basedosdados / basedosdados/pipelines

[fix] Logs de _upload_to_gcs não indicam o ambiente (dev/prod)

Open
#1,768 0 comments 0 reactions 0 assignees View on GitHub
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

Image

Contributor guide

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.