Skip to content

espindoolaa/API-V-LAB

Repository files navigation

⛽ Seleção API-VLAB: Gestão de Abastecimentos Nacional

Esta é uma API Gateway (REST) desenvolvida com o intuito de gerenciar registros de abastecimentos de veículos. O sistema atua como uma interface para o "Data Lake" do setor de transportes nacional, permitindo o cadastro, persistência e consulta de dados de forma eficiente e segura.

🚀 Tecnologias Utilizadas

  • Python 3.10+: Linguagem base do projeto.
  • FastAPI: Framework moderno, rápido (high-performance) e baseado em type hints.
  • SQLAlchemy: ORM para mapeamento e manipulação do banco de dados.
  • Alembic: Gerenciamento de versões e migrações do banco de dados.
  • Docker & Docker Compose: Containerização total para garantir que o projeto rode em qualquer ambiente.
  • Pydantic: Validação de dados e definição de schemas.
  • Pytest: Framework para execução de testes unitários.

🛠️ Funcionalidades e Diferenciais

Todos os requisitos mínimos do projeto foram implementados, tal como a ingestão de dados, consulta e relatórios e a elaboração de um script de carga, além das funções bônus também requisitadas:

  • Testes Automatizados (Pytest): Implementação de testes unitários simples.
  • Padronização de Código (Linters): Configuração por Ruff para garantir a formatação automática do código.
  • Health Check: Criação de um endpoint GET /health que retorne status 200 e informações.
  • Autenticação: Proteção da rota de Ingestão (POST) com um Token simples ou API Key.

📁 Arquitetura e Estrutura

A aplicação foi desenhada em camadas para facilitar a manutenção e a testabilidade:

  1. Camada de Entrada (API/V1): gerencia as requisições HTTP e injeção de dependências.

  2. Camada de Negócio (Services): residem as regras de validação e lógica principal.

  3. Camada de Dados (DB): responsável pela persistência e mapeamento objeto-relacional.

  4. Camada de Validação (Schemas): garante que os dados sejam validados.

├── alembic/            # Histórico e scripts de migração do banco
├── app/
│   ├── api/v1/         # Rotas da API e gerenciamento de dependências (API-KEY)
│   ├── db/             # Modelos SQLAlchemy e configuração da sessão
│   ├── schemas/        # Modelos Pydantic para serialização e validação
│   └── services/       # Lógica de negócio e comunicação com o banco
├── scripts/            # Scripts utilitários (Teste de carga)
│   └── load_data.py    
├── tests/unit          # Suíte de testes unitários para os serviços
│   └── test_abastecimento_service.py
├── main.py             # Ponto de entrada (Setup do FastAPI)
├── Dockerfile          # Configuração da imagem da aplicação
├── docker-compose.yml  # Orquestração da aplicação
└── requirements.txt    # Lista de dependências

⚙️ Execução do ambiente

  1. Subir Ambiente com Docker
# Constrói as imagens e sobe os containers
docker compose up --build
  1. Aplicar Migrações do Banco
# Configurado para migrar quando inicializado o conteiner.
  1. Executar Testes Unitários
docker compose run --rm -e PYTHONPATH=. app python -m pytest
  1. Executar Script de Carga (Opcional)
# Configurado para rodar quando inicializado o conteiner.
docker compose run --rm app python scripts/load_data.py

About

API Gateway (REST) desenvolvida para o processo seletivo do V-LAB UFPE.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published