Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

🐍 Desafio Técnico — Desenvolvedor Python Júnior

Nível: Júnior
Tempo estimado: 3–5 horas
Linguagem: Python 3.10+


📋 Visão Geral

Você deverá desenvolver uma aplicação em Python que consuma a API PTAX do Banco Central do Brasil, gere um relatório em CSV com a cotação do dólar nos últimos 30 dias e envie esse relatório por e-mail para um destinatário configurável.

Este desafio avalia sua capacidade de:

  • Consumir APIs REST externas
  • Manipular e tratar dados
  • Gerar arquivos estruturados
  • Automatizar o envio de e-mails
  • Organizar e documentar código

🎯 Requisitos Funcionais

1. Ambiente Python

  • O projeto deve conter um arquivo requirements.txt com todas as dependências necessárias
  • É obrigatório o uso de ambiente virtual (venv)
  • O Python deve ser 3.10 ou superior

2. Consulta à API PTAX (Banco Central)

  • Utilize a API pública do BACEN para obter a cotação do dólar (PTAX)
  • Endpoint de referência:
    https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarPeriodo(dataInicial=@dataInicial,dataFinalCotacao=@dataFinalCotacao)
    
  • Consulte os dados dos últimos 30 dias a partir da data atual
  • Utilize os valores de cotação de venda (cotacaoVenda) e compra (cotacaoCompra)
  • Trate possíveis erros de requisição (timeout, status != 200, resposta vazia)

3. Geração do Relatório CSV

  • O arquivo deve ser salvo localmente com o nome: cotacao_dolar_YYYY-MM-DD.csv
    (onde YYYY-MM-DD é a data de geração do relatório)
  • O CSV deve conter as seguintes colunas:
Coluna Descrição
data Data da cotação (DD/MM/YYYY)
hora Hora da cotação (HH:MM:SS)
cotacao_compra Valor de compra do dólar (R$)
cotacao_venda Valor de venda do dólar (R$)
  • Utilize ponto e vírgula (;) como separador
  • Encoding: UTF-8

4. Envio por E-mail

  • O relatório CSV gerado deve ser enviado como anexo por e-mail
  • Destinatário fixo: danh.andrade@outlook.com
  • O e-mail deve conter:
    • Assunto: Relatório PTAX - Cotação do Dólar - DD/MM/YYYY
    • Corpo: mensagem em texto simples informando o período consultado e a quantidade de registros encontrados
    • Anexo: o arquivo CSV gerado
  • As credenciais do e-mail remetente devem ser configuradas via variáveis de ambiente (não devem estar hardcoded no código)

🗂️ Estrutura de Arquivos Esperada

desafio_ptax/
├── venv/                    # Ambiente virtual (não versionar)
├── .env                     # Variáveis de ambiente (não versionar)
├── .env.example             # Exemplo de variáveis de ambiente (versionar)
├── .gitignore
├── requirements.txt
├── README.md
├── main.py                  # Ponto de entrada da aplicação
└── src/
    ├── __init__.py
    ├── ptax.py              # Módulo de consulta à API
    ├── relatorio.py         # Módulo de geração do CSV
    └── email_sender.py      # Módulo de envio de e-mail

⚙️ Variáveis de Ambiente

Crie um arquivo .env na raiz do projeto com as seguintes variáveis:

EMAIL_REMETENTE=seu_email@gmail.com
EMAIL_SENHA=sua_senha_de_app
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587

💡 Dica: Para o Gmail, utilize uma senha de aplicativo gerada nas configurações de segurança da conta. Nunca exponha sua senha real.


📦 Dependências Sugeridas

Você tem liberdade para escolher as bibliotecas, mas as seguintes são sugeridas:

requests
python-dotenv

Bibliotecas padrão do Python que também podem ser úteis: csv, smtplib, email, datetime, os


▶️ Como Executar

O avaliador deve conseguir rodar o projeto com os seguintes comandos:

# 1. Clonar o repositório
git clone <url-do-repositorio>
cd desafio_ptax

# 2. Criar e ativar o ambiente virtual
python -m venv venv
source venv/bin/activate        # Linux/macOS
venv\Scripts\activate           # Windows

# 3. Instalar dependências
pip install -r requirements.txt

# 4. Configurar variáveis de ambiente
cp .env.example .env
# Editar o arquivo .env com as credenciais reais

# 5. Executar
python main.py

✅ Critérios de Avaliação

Critério Peso
Funcionamento correto da aplicação Alto
Qualidade e organização do código Alto
Tratamento de erros e exceções Médio
Uso correto de variáveis de ambiente Médio
Clareza do README Médio
Boas práticas (funções pequenas, nomes descritivos) Baixo
Uso de type hints Bônus
Logs informativos durante a execução Bônus

🚫 Restrições

  • Não utilize frameworks web (Flask, FastAPI, Django, etc.)
  • Não armazene credenciais diretamente no código
  • Não versione o arquivo .env nem a pasta venv/
  • O código deve rodar localmente sem dependência de serviços de nuvem

📬 Entrega

  1. Suba o projeto em um repositório público no GitHub
  2. Certifique-se de que o README.md explique claramente como configurar e executar
  3. Envie o link do repositório para o avaliador

💡 Dicas

  • Consulte a documentação oficial da API PTAX
  • Fique atento ao formato de data esperado pela API: MM-DD-YYYY
  • A API pode não retornar dados para finais de semana e feriados — trate esses casos
  • Prefira funções pequenas e com responsabilidade única
  • Teste manualmente cada módulo antes de integrar tudo em main.py

Boa sorte! Em caso de dúvidas sobre o escopo do desafio, entre em contato com o avaliador.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors