Este projeto simula uma API para o domínio de seguros, com o objetivo de avaliar habilidades de desenvolvimento backend em Python utilizando FastAPI, integração com serviços externos e persistência de dados em banco SQLite.
Você deve realizar refatorações e implementar funcionalidades na API conforme os requisitos abaixo. O desafio avalia:
- Organização e clareza do código
- Uso correto de FastAPI
- Integração com serviços HTTP externos
- Persistência de dados com SQLite
- Boas práticas de desenvolvimento
Implemente o endpoint:
@app.post("/policies")
async def create_policy(policy: dict, db: Session = Depends(get_db)):
passEste endpoint deve:
- Receber um JSON no formato abaixo (exemplo de body):
{
"insurance_id": "ec7a15de-3f99-4e92-902b-44e2198ff46c",
"quote_id": "qte_92f3c8a1",
"insurance_type": "Car",
"plan_code": "AUTO_PREMIUM",
"policy_start_date": "2025-10-09",
"applicant": {
"full_name": "John Doe",
"document_id": "999.999.999-99",
"birthdate": "1990-04-12",
"email": "john.doe@email.com",
"phone": "+55 11 99999-9999",
"address": {
"country": "BR",
"postal_code": "01310-000",
"city": "São Paulo",
"state": "SP",
"street": "Av. Paulista, 1000, apto 12"
}
},
"risk_object": {
"car": {
"vin": "9BWZZZ377VT004251",
"plate": "ABC1D23",
"year": 2022,
"make": "Volkswagen",
"model": "Golf"
}
},
"beneficiaries": [
{"name": "Jane Doe", "relationship": "Spouse", "share": 100}
],
"payment": {
"method": "credit_card",
"currency": "BRL",
"installments": 12,
"amount": 129.50,
"card": {
"holder_name": "JOHN DOE",
"last4": "4242",
"token": "tok_visa_abc123"
}
},
"metadata": {
"channel": "web",
"utm_source": "campaign_oct"
}
}- Realizar uma chamada HTTP POST para o endpoint externo de policies.
- Persistir todos os dados recebidos no banco SQLite.
Implemente o endpoint:
@app.get("/insurers/by-type/{insurance_type}")
async def insurers_by_type(insurance_type: str):
passEste endpoint deve:
- Buscar as seguradoras do endpoint externo (com cache local para evitar requisições repetidas).
- Filtrar e retornar apenas as seguradoras do tipo informado.
Implemente um endpoint para listar todas as apólices salvas no banco de dados SQLite. Exemplo:
@app.get("/policies")
async def list_policies(db: Session = Depends(get_db)):
pass- Utilize FastAPI, httpx para chamadas HTTP e SQLAlchemy para persistência.
- O banco de dados deve ser SQLite e a estrutura já está preparada no projeto.
- O endpoint de seguradoras externas é:
https://jaya-insurance.free.beeceptor.com/insurances - O endpoint de policies externas é:
https://jaya-insurance.free.beeceptor.com/policies/ - O cache do endpoint de seguradoras já está implementado.
- Código limpo, organizado e funcional
- Uso correto dos frameworks e bibliotecas
- Persistência correta dos dados
- Clareza na filtragem e retorno dos dados
- Documentação e instruções claras
- Instale as dependências:
pip install -r requirements.txt
- Execute a API:
uvicorn main:app --reload
- Acesse a documentação automática em: http://localhost:8000/docs
Boa sorte!