Skip to content

Latest commit

 

History

History
78 lines (67 loc) · 2.1 KB

File metadata and controls

78 lines (67 loc) · 2.1 KB

Luxury Wheels API

Requisitos

  • Python 3.11+ (recomendado)
  • MySQL rodando localmente (ou ajuste o DATABASE_URL para outro banco)

Configuracao

  1. Crie/edite o arquivo .env:
    • DATABASE_URL (exemplo MySQL)
    • SECRET_KEY (use uma chave forte)
  2. Garanta que o usuario do banco tenha permissao de acesso.

Exemplo:

DATABASE_URL=mysql+pymysql://app_user:sua_senha@localhost:3306/luxury_wheels
SQL_ECHO=false
SECRET_KEY=sua_chave_secreta

Instalacao

pip install -r requirements.txt

Executar

uvicorn main:app --reload

Docs: http://127.0.0.1:8000/docs

Funcionalidades principais

  • CRUD de veiculos, clientes, reservas e formas de pagamento via API (Swagger).
  • Dashboard em /dashboard com indicadores e alertas.
  • Exportacao em Excel/CSV: /api/export/{entity_type}?file_format=xlsx|csv
    • entity_type: vehicles, clients, reservations, payments

Regras de negocio

  • Veiculos em manutencao (is_maintenance=true) ficam indisponiveis para novas reservas.

Guia rapido para avaliadores

  1. Inicie o servidor:
uvicorn main:app --host 127.0.0.1 --port 8000
  1. Inicialize o banco (cria tabelas):
python scripts/init_db.py
  • Se ja tiver tabelas antigas e quiser recriar tudo: set DROP_DB=true e rode o mesmo comando novamente.
  1. Se nao houver veiculos, execute o seed:
python scripts/seed_data.py
  1. Acesse o painel admin:
    • http://127.0.0.1:8000/admin
    • Crie usuario e faca login
    • O primeiro usuario registrado vira admin automaticamente
    • Use as abas de Veiculos/Clientes/Reservas/Pagamentos
  2. Dashboard:
    • Visual: http://127.0.0.1:8000/admin-tools
    • API: http://127.0.0.1:8000/dashboard
  3. Exportacao:
    • http://127.0.0.1:8000/api/export/vehicles?file_format=xlsx
    • http://127.0.0.1:8000/api/export/vehicles?file_format=csv
  4. Front publico:
    • Lista de carros: http://127.0.0.1:8000/car-list
    • Reserva: http://127.0.0.1:8000/reserva
    • Login: http://127.0.0.1:8000/login

Testes rapidos

pytest

Problemas comuns

  • Erro Access denied for user: usuario/senha do MySQL incorretos ou sem permissao.