# Rota

Uma **rota** é um agrupamento de pedidos organizados em uma sequência de paradas otimizada para entrega. A Abbiamo calcula o trajeto ideal (via Mapbox) e permite acompanhar a execução em tempo real.

---

## Tipos de rota

| Tipo | Valor interno | Quem executa |
|------|---------------|--------------|
| **Frota Própria** | `PRIVATE_FLEET` | Motorista cadastrado na plataforma — veículo e motorista são da empresa |
| **Transportadora (TRP)** | `CARRIER` | Transportadora externa — a rota é convertida em uma solicitação de coleta em lote |
**Contexto:** **Frota Própria** é usado exclusivamente no contexto **GO** (transportadoras com frota própria). **Transportadora** pode ser usado em GO e em LOG.

---

## Status de rota

| Status | Significado |
|--------|-------------|
| `CREATED` | Rota criada, ainda não iniciada |
| `START_DELIVERY` | Entregas em andamento |
| `CANCELED` | Rota cancelada manualmente |
| `ALL_WAYPOINTS_FINISHED` | Todas as paradas concluídas, aguardando finalização |
| `FINISHED` | Rota finalizada com sucesso |

---

## Estrutura de uma rota

### Informações principais

| Campo | Descrição |
|-------|-----------|
| **Nome** | Identificador amigável da rota (atribuído pelo criador) |
| **Tipo** | PRIVATE_FLEET ou CARRIER |
| **Armazém** | Local de partida dos pedidos (ponto de origem) |
| **Motorista** | Responsável pela execução (apenas Frota Própria) |
| **Transportadora** | Carrier externo (apenas modo Transportadora) |

### Waypoints (paradas)

Cada pedido na rota é uma **parada** (*waypoint*) com:
- Endereço de entrega
- Janela de horário (quando configurada)
- Status individual da parada (ex.: entregue, falhou, pendente)
- Comprovante de entrega (foto, assinatura, código)

---

## Fluxo de criação

1. **Selecionar pedidos** — escolher quais pedidos entrarão na rota.
2. **Configurar** — definir armazém de origem e responsável (motorista ou transportadora).
3. **Sugerir rota** — a plataforma otimiza a sequência de paradas via Mapbox.
4. **Visualizar prévia** — revisar o trajeto no mapa antes de confirmar.
5. **Confirmar** — rota criada e (se Frota Própria) motorista notificado.

---

## Ciclo de vida

```
CREATED → START_DELIVERY → ALL_WAYPOINTS_FINISHED → FINISHED
                        ↘ CANCELED
```

Uma rota pode ser cancelada manualmente enquanto ainda estiver em `CREATED` ou `START_DELIVERY`.

---

## Ações disponíveis por status

| Ação | CREATED | START_DELIVERY | ALL_WAYPOINTS_FINISHED |
|------|---------|----------------|------------------------|
| Atribuir motorista | ✓ | — | — |
| Solicitar coleta (TRP) | ✓ | — | — |
| Duplicar | ✓ | ✓ | ✓ |
| Cancelar | ✓ | ✓ | — |

---

## Onde aparece

- [**Tela de Rotas (GO)**](https://abbiamo-guide.netlify.app/go/products/rotas/) — criação e acompanhamento no contexto de frota própria e transportadora.
- [**Tela de Rotas (LOG)**](https://abbiamo-guide.netlify.app/log/products/rotas/) — acompanhamento de rotas no modo transportadora.
- **Pedidos** — cada pedido exibe a rota à qual está associado (quando houver).