📚 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.

🛵 PI 06 — QuickDrop (DeliveryExpress): Roteamento & Logística

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)

🎓 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.


🏛️ Galeria Arquitetural & Diagramas de Engenharia

Arquitetura de Roteamento e Despacho de Encomendas

Arquitetura QuickDrop

Diagrama de Casos de Uso Formal (UML)

Casos de Uso Delivery


📁 Estrutura Canônica de Pastas Anti-Colisão

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

🧑‍💼 Especificação Formal de Engenharia de Software

1. Histórias de Usuário (User Stories)

2. Requisitos Funcionais (RF)

3. Requisitos Não-Funcionais (RNF)


📐 Diagrama de Casos de Uso (Mermaid)

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

📊 Matriz de Rastreabilidade de Requisitos (RTM)

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

🚀 Roteiro de Execução & Homologação no Laboratório

1. Execução Automatizada via CLI Python (main.py)

cd catalogo_projetos/fullstack_pi_06_quickdrop

# Execução do menu interativo
python main.py

2. Execução Direta da Suíte de Testes Unitários

python -m unittest tests/test_quickdrop.py

🧪 Matriz de Checkpoints de Homologação (CP-01 a CP-05)

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 ✅