Pipeline no Databricks que coleta o histórico de preço do Bitcoin, gera uma análise executiva semanal com um agente de IA (Google Gemini) e envia o relatório por e-mail em HTML, de ponta a ponta e sem intervenção manual.
| # | Notebook | Camada | O que faz |
|---|---|---|---|
| 02 | 02_etl_camada_bruta |
Bronze | Baixa o histórico diário do BTC-USD (1 ano) via yfinance e grava em db_analytics.price_raw_bitcoin (Delta) |
| 03 | 03_camada_refinada |
Silver | Agrega os dados diários por semana (abertura, fechamento, máxima, mínima, volume médio, variação %) em db_analytics.price_silver_bitcoin |
| 04 | 04_agente_analise_financeiro |
Agente 1 | Envia as duas últimas semanas para o Gemini (prompts/agente_analise.txt) e gera uma análise executiva em texto |
| 05 | 05_agente_construcao_email |
Agente 2 | Transforma a análise em um e-mail HTML pronto para envio (prompts/agente_html.txt) |
| 06 | 06_stack_envio_email |
Entrega | Envia o e-mail via API do Resend |
As tasks trocam dados entre si via dbutils.jobs.taskValues (sem escrever tabelas
intermediárias para o conteúdo gerado pelos agentes).
- Job:
1 - geracao_relatorio_financeiro - Agendamento: semanal (trigger periódico)
- DAG:
etl_camada_bruta→etl_camada_silver→agente_analise→agente_email→envio_email
- Ingestão:
yfinance - Processamento: PySpark + Delta Lake (Unity Catalog)
- IA generativa:
langchain-google-genai(Geminigemini-flash-latest) - Envio de e-mail:
resend - Configuração:
python-dotenv
O projeto lê as seguintes variáveis de ambiente (via .env no workspace):
| Variável | Descrição |
|---|---|
GEMINI_API_KEY |
Chave de API do Google Gemini |
RESEND_API_KEY |
Chave de API do Resend |
EMAIL_DESTINO |
E-mail que recebe o relatório semanal |
⚠️ Limitação atual: o remetente usa o domínio de testeonboarding@resend.dev, que só entrega e-mails para o endereço da própria conta Resend. Para enviar a qualquer destinatário, é preciso verificar um domínio próprio no Resend.
- Mover segredos de
.env(texto puro) para Databricks Secret Scopes - Versionar o projeto com Databricks Repos + Git
- Definir o job como código com Databricks Asset Bundles
- Tornar a camada Bronze append-only (hoje é
overwritea cada execução) - Persistir as análises geradas pelo agente em uma camada Gold (histórico consultável)
- Adicionar
timeout_secondsemax_retriesnas tasks do job - Configurar alerta por e-mail em caso de falha do job
- Validar dados (nulos, gaps de datas, resposta vazia do LLM) antes de seguir o pipeline
- Testes automatizados para as transformações do PySpark
- Parametrizar ticker/período/catálogo (hoje hard-coded nos notebooks)
- 2026-09-01: Workflow
1 - geracao_relatorio_financeiromontado e validado com execução completa do pipeline; agendamento semanal ativado. - 2026-07-28: corrigido
TypeErrorno notebook 05 causado poranalise/htmlretornando como lista em vez destringquando o Gemini fragmenta a resposta; corrigidofrominválido (faltava endereço de e-mail) no notebook 06.
