Sistema de gestão de pedidos desenvolvido em Python com FastAPI, incluindo funcionalidades de cadastro de clientes, produtos, pedidos e usuários.
- Python 3.12
- FastAPI
- SQLAlchemy
- PostgreSQL
- Docker
- Docker Compose
- Pytest
- JWT para autenticação
- Docker
- Docker Compose
- Git
- Clone o repositório:
git clone https://github.com/seu-usuario/infog2.git
cd infog2
- Configure as variáveis de ambiente:
cp .env.example .env
Edite o arquivo .env com suas configurações locais.
- Inicie os containers com Docker Compose:
docker-compose up -d
- Acesse a aplicação:
- API: http://localhost:8000
- Documentação Swagger: http://localhost:8000/docs
- Documentação ReDoc: http://localhost:8000/redoc
- Testes Unitários
docker-compose exec infog2 pytest tests/unit/ -v
docker-compose exec infog2 pytest tests/unit/test_client_service.py -v
docker-compose exec infog2 pytest tests/unit/test_product_service.py -v
docker-compose exec infog2 pytest tests/unit/test_order_service.py -v
docker-compose exec infog2 pytest tests/unit/test_user_service.py -v
- Testes de Integração
docker-compose exec infog2 pytest tests/test_clients_operations.py -v
docker-compose exec infog2 pytest tests/test_products_operations.py -v
docker-compose exec infog2 pytest tests/test_orders_operations.py -v
docker-compose exec infog2 pytest tests/test_auth_permissions.py -v
- Testes de Autenticação
docker-compose exec infog2 pytest tests/test_auth_permissions.py -v
-
tests/unit/: Testes unitários dos serviçostest_client_service.py: Testes do serviço de clientestest_product_service.py: Testes do serviço de produtostest_order_service.py: Testes do serviço de pedidostest_user_service.py: Testes do serviço de usuários
-
tests/: Testes de integraçãotest_clients_operations.py: Testes das operações de clientestest_products_operations.py: Testes das operações de produtostest_orders_operations.py: Testes das operações de pedidostest_auth_permissions.py: Testes de autenticação e permissões
A documentação completa da API está disponível em:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
POST /clients/: Criar novo cliente (requer admin)GET /clients/: Listar clientesGET /clients/{id}: Buscar cliente por IDPUT /clients/{id}: Atualizar cliente (requer admin)DELETE /clients/{id}: Excluir cliente (requer admin)
POST /products/: Criar novo produto (requer admin)GET /products/: Listar produtosGET /products/{id}: Buscar produto por IDPUT /products/{id}: Atualizar produto (requer admin)DELETE /products/{id}: Excluir produto (requer admin)
POST /orders/: Criar novo pedidoGET /orders/: Listar pedidosGET /orders/{id}: Buscar pedido por IDPUT /orders/{id}: Atualizar pedidoDELETE /orders/{id}: Excluir pedido
POST /users/: Criar novo usuário (requer admin)GET /users/me: Obter dados do usuário atualPUT /users/me: Atualizar dados do usuário atual
POST /token: Obter token de acessoPOST /token/refresh: Renovar token de acesso
A API utiliza autenticação JWT (JSON Web Token). Para acessar endpoints protegidos:
- Obtenha um token de acesso:
curl -X POST "http://localhost:8000/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=seu_usuario&password=sua_senha"
- Use o token retornado no header das requisições:
curl -X GET "http://localhost:8000/clients/" \
-H "Authorization: Bearer seu_token_aqui"
infog2/
├── src/
│ ├── controllers/ # Controladores da API
│ ├── models/ # Modelos do banco de dados
│ ├── routers/ # Rotas da API
│ ├── schemas/ # Schemas Pydantic
│ ├── services/ # Lógica de negócio
│ └── utils/ # Utilitários
├── tests/
│ ├── unit/ # Testes unitários
│ └── ... # Testes de integração
├── .env # Variáveis de ambiente
├── .env.example # Exemplo de variáveis de ambiente
├── docker-compose.yml # Configuração do Docker Compose
└── Dockerfile # Configuração do Docker
- Configure o ambiente virtual:
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
- Execute os testes durante o desenvolvimento:
pytest -v