Skip to content

jaya/insurance-test-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Desafio Técnico - API de Seguros

Contexto

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.

Objetivo do Desafio

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

O que você deve implementar

1. Endpoint para criar uma apólice

Implemente o endpoint:

@app.post("/policies")
async def create_policy(policy: dict, db: Session = Depends(get_db)):
    pass

Este 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.

2. Endpoint para listar seguradoras por tipo

Implemente o endpoint:

@app.get("/insurers/by-type/{insurance_type}")
async def insurers_by_type(insurance_type: str):
    pass

Este 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.

3. Endpoint para listar policies salvas

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

Observações

  • 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.

Critérios de avaliação

  • 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

Como rodar o projeto

  1. Instale as dependências:
    pip install -r requirements.txt
  2. Execute a API:
    uvicorn main:app --reload
  3. Acesse a documentação automática em: http://localhost:8000/docs

Boa sorte!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages