- 🎯 Visão Geral
- 🚀 Tecnologias Utilizadas
- ✨ Funcionalidades
- 🧬 Modelo de Grafo (Neo4j)
- 🛠️ Instalação e Configuração
- 📂 Estrutura do Projeto
- 📖 Endpoints Principais
- 🔐 Autenticação
O EasyRoute API é o backend robusto do sistema EasyRoute, um WMS (Warehouse Management System) moderno e inteligente. Diferente dos sistemas tradicionais relacionais, utilizamos o poder dos Bancos de Dados de Grafos (Neo4j) para modelar a complexa hierarquia física de um armazém e otimizar rotas de coleta (picking).
Principais capacidades:
- Gerenciamento hierárquico (Warehouse → Zone → Aisle → Shelf → Bin).
- Controle de inventário com localização precisa.
- Roteirização otimizada utilizando algoritmos de grafos (caminho mais curto).
- Autenticação segura e escalável via Firebase.
Modelagem hierárquica completa:
Warehouse (Armazém) ➔ Zone (Zona) ➔ Aisle (Corredor) ➔ Shelf (Prateleira) ➔ Bin (Caixa/Posição)
- Cadastro de Produtos e SKUs.
- Rastreamento de quantidade em tempo real.
- Localização exata via relação
Product -[:STORED_IN]-> Bin.
- Criação de pedidos multi-itens.
Abaixo está a representação visual da modelagem dos nós e relacionamentos no Neo4j:
graph TD
W[Warehouse] -->|CONTAINS| Z[Zone]
Z -->|CONTAINS| A[Aisle]
A -->|CONTAINS| S[Shelf]
S -->|CONTAINS| B[Bin]
P[Product] -->|STORED_IN| B
O[Order] -->|HAS_ITEM| OI[OrderItem]
classDef container fill:#e1f5fe,stroke:#01579b,stroke-width:2px;
classDef item fill:#fff9c4,stroke:#fbc02d,stroke-width:2px;
class W,Z,A,S,B container;
class P,O,OI item;
- Docker & Docker Compose
- Python 3.11+
-
Clone o repositório
git clone [https://github.com/JoaoFlavio11/warehouse-api](https://github.com/JoaoFlavio11/warehouse-api) cd warehouse-api -
Configure as variáveis de ambiente Crie um arquivo
.envna raiz do projeto:NEO4J_URI=bolt://localhost:7687 NEO4J_USER=neo4j NEO4J_PASSWORD=wms_password_123 # Caminho para sua chave privada do Firebase FIREBASE_CREDENTIALS_PATH=./firebase-service-account.json
-
Inicie o Neo4j via Docker
docker-compose up -d neo4j
Acesse o painel do Neo4j em: http://localhost:7474
-
Instale as dependências locais
pip install -r requirements.txt
-
Popule o banco com dados de teste (Seed)
python manage.py shell < scripts/seed_warehouse.py -
Inicie o servidor
python manage.py runserver
warehouse-api/
├── config/ # Configurações globais do Django
├── core/ # Middleware e Autenticação Firebase
├── warehouse/ # Modelagem da estrutura física (Nós e Relacionamentos)
├── products/ # Gestão de Inventário
├── orders/ # Lógica de Pedidos e Algoritmos de Rota
├── dashboard/ # Métricas e Analytics
├── lib/ # Utilitários e Algoritmos de Grafos Puros
├── scripts/ # Scripts de Seed e automação
├── docker-compose.yml
└── manage.py
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/api/warehouses/ |
Lista todos os armazéns |
POST |
/api/warehouses/ |
Cria um novo armazém |
GET |
/api/warehouses/{uid}/ |
Detalhes da hierarquia do armazém |
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/api/products/ |
Listagem de inventário |
POST |
/api/products/ |
Cadastro de SKU |
| Método | Endpoint | Descrição |
|---|---|---|
POST |
/api/orders/create/ |
Cria pedido e gera rota otimizada |
GET |
/api/orders/ |
Histórico de pedidos |
O sistema utiliza tokens JWT do Firebase. Todas as requisições protegidas devem incluir o cabeçalho:
Authorization: Bearer <SEU_TOKEN_JWT_FIREBASE>Exemplo com cURL:
curl http://localhost:8000/api/products/ \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6..."