Uma API REST moderna construída com FastAPI que:
- 📁 Recebe um arquivo CSV via upload
- 🔍 Processa os dados com Pandas
- 📈 Gera um relatório estatístico detalhado
- 📧 Envia o relatório por e-mail automaticamente
- ✅ Upload de arquivos CSV com validação
- ✅ Análise estatística completa dos dados
- ✅ Envio automático por email com relatórios formatados
- ✅ Tratamento de erros robusto
- ✅ Logging para debugging
- ✅ Documentação interativa com Swagger UI
- ✅ Validações de entrada (formato de email, tipo de arquivo)
- Python 3.9+
- pip funcionando corretamente
- Conta Gmail com senha de app configurada
git clone https://github.com/seu-usuario/projeto_api_csv_email.git
cd projeto_api_csv_emailpip install -r requirements.txtCopie o arquivo de exemplo e configure suas credenciais:
cp .env.example .envEdite o arquivo .env com suas credenciais:
EMAIL_REMETENTE=seu_email@gmail.com
SENHA_REMETENTE=sua_senha_de_app_16_digitos- Acesse: Google App Passwords
- Faça login com sua conta Gmail
- Selecione "Outro (personalizado)" e digite
API-CSV - Clique em "Gerar"
- Copie a senha de 16 dígitos gerada
- Use essa senha no arquivo
.env
python -m uvicorn main:app --reloadA API estará disponível em: http://127.0.0.1:8000
Acesse a documentação interativa em:
- Swagger UI: http://127.0.0.1:8000/docs
- ReDoc: http://127.0.0.1:8000/redoc
- Acesse http://127.0.0.1:8000/docs
- Clique em "POST /enviar-relatorio/"
- Clique em "Try it out"
- Faça upload do arquivo CSV
- Digite o email de destino
- Clique em "Execute"
curl -X POST "http://127.0.0.1:8000/enviar-relatorio/" \
-H "Content-Type: multipart/form-data" \
-F "arquivo=@exemplo.csv" \
-F "email_destino=destinatario@email.com"import requests
with open('exemplo.csv', 'rb') as f:
files = {'arquivo': f}
data = {'email_destino': 'destinatario@email.com'}
response = requests.post('http://127.0.0.1:8000/enviar-relatorio/',
files=files, data=data)
print(response.json())projeto_api_csv_email/
│
├── 📄 main.py # API FastAPI principal
├── 📊 relatorio.py # Processamento e análise do CSV
├── 📧 email_utils.py # Utilitários para envio de email
├── 📋 exemplo.csv # Arquivo de exemplo para teste
├── ⚙️ requirements.txt # Dependências do projeto
├── 🔒 .env.example # Exemplo de configuração
├── 🚫 .gitignore # Arquivos ignorados pelo Git
└── 📖 README.md # Esta documentação
O relatório gerado inclui:
==================================================
RELATÓRIO DE ANÁLISE DE DADOS
==================================================
📊 INFORMAÇÕES GERAIS:
• Total de registros: 3
• Total de colunas: 3
• Colunas: nome, idade, salario
📈 ESTATÍSTICAS DESCRITIVAS:
idade salario
count 3.000000 3.000000
mean 30.000000 5500.000000
std 5.000000 1322.875656
min 25.000000 4500.000000
25% 27.500000 4750.000000
50% 30.000000 5000.000000
75% 32.500000 6000.000000
max 35.000000 7000.000000
✅ Nenhum valor ausente encontrado
📋 AMOSTRA DOS DADOS (primeiras 5 linhas):
nome idade salario
0 Alice 30 5000
1 Bob 25 4500
2 Carol 35 7000
==================================================
A API inclui tratamento robusto para:
- ❌ Arquivos não-CSV: Rejeita arquivos que não sejam .csv
- ❌ Arquivos vazios: Valida se o arquivo contém dados
- ❌ Emails inválidos: Verifica formato básico de email
- ❌ Credenciais inválidas: Trata erros de autenticação SMTP
- ❌ CSVs malformados: Captura erros de parsing do Pandas
- Fork o projeto
- Crie sua feature branch (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Adiciona MinhaFeature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para detalhes.
Se este projeto foi útil para você, deixe uma ⭐!
Feito com ❤️ usando FastAPI e Python