Desafio técnico do processo seletivo para estágio na Intuitive Care 2026 implementando integração com dados públicos da ANS, transformação e validação de dados, análise em banco de dados SQL e API REST com interface web.
-
Durante a realização do projeto, mais preciso na fase
1.3 Consolidação e Análise de Inconsistências. Minha interpretação foi a seguinte, eu juntei os dados em um.csvsó e fiz a junção docnpjsomente na etapa2.2 Enriquecimento de Dados com Tratamento de Falhas -
No arquivo
insert_csv.sqlmude o diretório que está ali para o diretório do seu computador onde estão localizados os arquivos.csvque precisaremos utilizar
O projeto é dividido em 4 etapas principais:
- Integração e download dos 3 últimos trimestres
- Transofrmação e Validação de arquivos
- Criação do banco de dados
- Api e interface web
- Python 3.10+
- Node.js 18+
- PostgreSQL (para a API)
git clone https://github.com/bxzzxnx/TesteIntuitiveCare
cd TesteIntuitiveCare# Na raiz do projeto
TesteIntuitiveCare> python -m venv .venv
# Windows
TesteIntuitiveCare> .venv\Scripts\activate
# Linux/Mac
TesteIntuitiveCare> source .venv/bin/activateQuando ativado, você verá (.venv) no terminal:
(.venv) TesteIntuitiveCare>(.venv) TesteIntuitiveCare> pip install -r requirements.txt(.venv) TesteIntuitiveCare> cd client
(.venv) TesteIntuitiveCare\client> npm installO projeto inclui uma coleção Postman para testar todos os endpoints da API.
- Importe a coleção
postman_collection.jsonno Postman - Certifique-se que a API está rodando (
fastapi dev app.py) - Execute os requests da coleção
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/operadoras |
Lista operadoras (com paginação e busca) |
| GET | /api/operadoras/{cnpj} |
Detalhes de uma operadora |
| GET | /api/operadoras/{cnpj}/despesas |
Despesas de uma operadora |
| GET | /api/estatisticas |
Estatísticas gerais |
| Variável | Valor Padrão |
|---|---|
base_url |
http://localhost:8000 |
cnpj_exemplo |
54557861000102 |
Execute os scripts na ordem para processar os dados corretamente:
(.venv) TesteIntuitiveCare> cd Integracao_api
# 1.1 - Baixar demonstrações contábeis trimestrais da ANS
(.venv) TesteIntuitiveCare\Integracao_api> python download_trimentes.py
# Saída: data/raw/*.zip
# 1.2 - Extrair arquivos ZIP
(.venv) TesteIntuitiveCare\Integracao_api> python extracao_zips.py
# Saída: data/extracted/*.csv
# 1.3 - Consolidar CSVs em arquivo único
(.venv) TesteIntuitiveCare\Integracao_api> python consolidar_dados.py
# Saída: data/consolidado_despesas.csv(.venv) TesteIntuitiveCare> cd Transformacao_validacao_dados
# 2.1 - Baixar cadastro de operadoras ativas
(.venv) TesteIntuitiveCare\Transformacao_validacao_dados> python download_cadop.py
# Saída: data/relatorio_cadop.csv
# 2.2 - Enriquecer, validar e agregar dados
(.venv) TesteIntuitiveCare\Transformacao_validacao_dados> python enriquecer_dados.py
# Saída: data/despesas_agregadas.csv + data/Teste_Antonio.zip(.venv) TesteIntuitiveCare> cd server
(.venv) TesteIntuitiveCare\server fastapi dev app.py| Recurso | URL |
|---|---|
| API | http://localhost:8000 |
| Documentação Swagger | http://localhost:8000/docs |
(.venv) TesteIntuitiveCare> cd client
(.venv) TesteIntuitiveCare\client> npm run dev| Recurso | URL |
|---|---|
| Aplicação Vue.js | http://localhost:5173 |
| Pasta | Arquivo | Descrição |
|---|---|---|
Integracao_api/ |
download_trimentes.py |
Download das demonstrações contábeis trimestrais |
extracao_zips.py |
Extração dos arquivos ZIP baixados | |
consolidar_dados.py |
Consolidação dos CSVs em arquivo único | |
Transformacao_validacao_dados/ |
download_cadop.py |
Download do cadastro de operadoras ativas |
cnpj_utils.py |
Funções de validação de CNPJ | |
enriquecer_dados.py |
Enriquecimento, validação e agregação | |
server/ |
app.py |
Aplicação FastAPI principal |
apirouter.py |
Rotas da API | |
models.py |
Modelos Pydantic | |
db/db.py |
Conexão com PostgreSQL | |
client/ |
views/*.vue |
Páginas da aplicação |
stores/operadoras.js |
Estado global (Pinia) | |
api/api.js |
Cliente HTTP para API |
TesteIntuitiveCare/
│
├── 📁 Integracao_api/ # Etapa 1: Coleta de dados
│ ├── 🐍 download_trimentes.py
│ ├── 🐍 extracao_zips.py
│ └── 🐍 consolidar_dados.py
│
├── 📁 Transformacao_validacao_dados/ # Etapa 2: ETL
│ ├── 🐍 cnpj_utils.py
│ ├── 🐍 download_cadop.py
│ └── 🐍 enriquecer_dados.py
│
├── 📁 data/ # Dados p
│ ├── 📁 raw/ # ZIPs originais
│ ├── 📁 extracted/ # CSVs extraídos
│ ├── 📄 consolidado_despesas.csv
│ ├── 📄 relatorio_cadop.csv # CSV das operadoras
│ └── 📄 despesas_agregadas.csv
│
├── 📁 server/ # Etapa 4.1: API Backend
│ ├── 📁 db/
│ │ └── 🐍 db.py
│ ├── 🐍 app.py
│ ├── 🐍 apirouter.py
│ └── 🐍 models.py
│
├── 📁 client/ # Etapa 4.2: Frontend
│ ├── 📁 src/
│ │ ├── 📁 api/
│ │ ├── 📁 router/
│ │ ├── 📁 stores/
│ │ └── 📁 views/
│ ├── 🌐 index.html
│ └── ⚙️ vite.config.js
│
├── 📁 sql/ # Etapa 3: Scripts SQL
│ ├── 📄 create_tables.sql
│ ├── 📄 insert_csv.sql
│ └── 📄 query*.sql
│
├── 📄 requirements.txt
├── 📄 postman_collection.json # Coleção Postman para testes da API
└── 📝 README.md