📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados na Matriz de 20 Capítulos de Aplicações Full Stack. Recomendado revisar antes de iniciar a execução.
v1.0 — Projeto Integrador Full Stack para despacho expresso de encomendas, cálculo de distância geográfica via fórmula de Haversine, tarifação dinâmica e alocação de entregador por proximidade.
Trilha de Especialização Pedagógica — Série Projetos Integradores (PI 6 de 6)
- PI 01: ParkManager (Gestão de Vagas, Tarifação e Caixa)
- PI 02: SafePass Corporate (Cofre de Senhas, Criptografia e LGPD)
- PI 03: ChefPoint (Comanda Digital e KDS Restaurante)
- PI 04: TechBorrow (Empréstimo de Dispositivos de TI)
- PI 05: StockFlow (Almoxarifado e Ponto de Pedido)
- PI 06 (este): QuickDrop (Roteamento Expresso e Alocação de Couriers)
🎓 Nível Profissional Simulado: Engenheiro de Otimização Logística / Arquiteto de Sistemas. Em serviços de entrega expressa (Last-Mile Delivery), a eficiência de roteamento e despacho afeta diretamente o custo por entrega e o cumprimento do SLA. Dominar trigonometria esférica (Haversine), heurísticas de vizinho mais próximo e modelagem concorrente de rotas capacita para desafios de engenharia em escala de mercado.
O projeto adota a convenção padronizada de subpastas por camada e tecnologia <camada>-<tecnologia>:
catalogo_projetos/fullstack_pi_06_quickdrop/
├── api-java/ # Core de regras e modelos de domínio em Java
│ └── main/java/com/deliveryexpress/
│ ├── model/
│ │ ├── Entregador.java # Entidade de entregador com coordenadas e status
│ │ └── Pedido.java # Pedido com geolocalização e SLA de entrega
│ └── service/
│ └── RoteamentoService.java # Algoritmo de roteirização e cálculo de taxa
├── tests/ # Bateria de testes de contratos e precisão
│ └── test_quickdrop.py # Testes unitários Haversine e alocação de courier
├── assets/ # Galeria de diagramas vetoriais SVG autorais
├── main.py # CLI orquestrador e runner do laboratório
├── README.md # Resumo do projeto integrador
└── DeliveryExpress_Documentacao_Final.md # Especificação acadêmica de engenharia
disponivel == True antes de determinar a menor distância.CRIADO, DESPACHADO, EM_TRANSITO e ENTREGUE.main.py) deve permitir executar a suíte completa de testes unitários e exibir o extrato do roteamento.flowchart LR
subgraph Atores
Cliente["👤 Cliente Solicitante"]
Despachante["🏢 Despachante Logístico"]
Entregador["🛵 Entregador (Courier)"]
end
subgraph "Sistema QuickDrop (DeliveryExpress)"
UC01["UC01: Cotar Taxa de Entrega"]
UC02["UC02: Calcular Distância Haversine"]
UC03["UC03: Alocar Courier Mais Próximo"]
UC04["UC04: Despachar e Rastrear Pedido"]
UC05["UC05: Auditar Cumprimento de SLA"]
end
Cliente --> UC01
UC01 -.-> UC02
Despachante --> UC03
Despachante --> UC04
Entregador --> UC04
Despachante --> UC05
| ID Requisito | História de Usuário | Caso de Uso | Camada Core (api-java) |
Suíte de Validação (tests) |
Status |
|---|---|---|---|---|---|
| RF-QD01 | US-QD01 | UC02 | RoteamentoService.java |
test_distancia_haversine_dois_pontos |
✅ Coberto |
| RF-QD02 | US-QD02 | UC01 | RoteamentoService.java |
test_calculo_taxa_entrega |
✅ Coberto |
| RF-QD03 | US-QD04 | UC03 | Entregador.java |
test_alocacao_entregador_mais_proximo |
✅ Coberto |
| RF-QD04 | US-QD03 | UC04 | Pedido.java |
main.py (Fluxo de Despacho) |
✅ Coberto |
| RF-QD05 | US-QD05 | UC05 | main.py |
test_quickdrop.py |
✅ Coberto |
main.py)cd catalogo_projetos/fullstack_pi_06_quickdrop
# Execução do menu interativo
python main.py
1 para rodar a suíte de testes de cálculo de distância e alocação.2 para visualizar o extrato da documentação de engenharia.python -m unittest tests/test_quickdrop.py
| Checkpoint | Procedimento de Verificação | Critério de Aceite | Status |
|---|---|---|---|
| CP-01 | Executar suíte de testes python -m unittest tests/test_quickdrop.py. |
4 testes executados com status Ran 4 tests in ... OK. |
PASS ✅ |
| CP-02 | Calcular distância entre coordenadas iguais no Haversine. | Retorno exato de 0.0 km. |
PASS ✅ |
| CP-03 | Calcular taxa de entrega para percurso de 4.0 km. | Retorno exato de R$ 15,00 (5 base + 10 por km). |
PASS ✅ |
| CP-04 | Simular alocação entre 3 couriers (dois próximos e um ocupado). | O entregador disponível com menor distância é selecionado com sucesso. | PASS ✅ |
| CP-05 | Iniciar menu interativo python main.py e selecionar opção 1. |
Despacho e testes executados sem erros de importação. | PASS ✅ |