Gestão de Rotas - Vanguru
Visão Geral
O sistema de gestão de rotas do Vanguru permite o planejamento, otimização e execução de rotas de transporte escolar, integrando navegação em tempo real, rastreamento GPS e notificações automáticas.
Funcionalidades Principais
Planejamento de Rotas
Criação Manual de Rotas
Informações Básicas: - Nome da Rota: Identificação (ex: "Manhã - Escola ABC") - Tipo: Ida ou Volta - Horário de Início: Horário planejado de partida - Passageiros: Seleção de passageiros da rota
Definição de Paradas: - Ordem manual de paradas (drag-and-drop) - Visualização no mapa - Endereços de coleta/entrega - Instituições de destino
Salvamento de Planejamentos
- Reutilização de rotas recorrentes
- Histórico de planejamentos
- Duplicação de rotas existentes
- Templates de rotas
Otimização de Rotas
Modo Free (Manual)
- Algoritmo próprio de sugestão
- Baseado em proximidade geográfica
- Sem considerar trânsito em tempo real
- Limitado a otimização manual
Modo Premium (Automático)
Google Directions API: - ✅ Cálculo automático da melhor ordem - ✅ Consideração de trânsito em tempo real - ✅ Otimização por tempo ou distância - ✅ Rotas alternativas - ✅ Estimativa precisa de tempo de chegada (ETA)
Benefícios: - Economia de Combustível: 10-20% - Economia de Tempo: 15-30 min/rota - Menor Desgaste: Menos km rodados - ROI: 25.000% - 50.000%
Execução de Rotas
Iniciar Execução
1. Usuário seleciona planejamento
2. Toca em "Iniciar Rota"
3. Sistema:
- Cria registro de execução
- Inicia rastreamento GPS
- Calcula polylines no mapa
- Ativa navegação turn-by-turn
Navegação Turn-by-Turn
Integração Google Maps: - Delegação para app Google Maps - Navegação por voz - Alertas de trânsito - Rotas alternativas em tempo real
Visualização no App: - Mapa com polylines - Marcadores de paradas - Posição atual (GPS) - Próxima parada destacada
Controle de Paradas
Marcar Parada como Concluída: - Hold-to-Confirm: Segurar botão por 2 segundos - Previne toques acidentais - Feedback visual e háptico - Timestamp de conclusão
Timeline de Execução: - Lista de paradas em ordem - Status: Pendente / Em Andamento / Concluída - Horário de conclusão - Passageiro(s) embarcado(s)
Notificações (Premium)
Push Notifications (FCM): - Notificação de início de rota - Alerta de chegada (próxima parada) - Notificação de atraso - Notificação de conclusão
Destinatários: - Responsáveis dos passageiros - Configurável por responsável
Histórico de Execuções
Armazenamento
Dados Salvos: - Data e hora de execução - Rota executada (snapshot) - Paradas e horários - Distância percorrida - Tempo total - Observações
Retenção: - Free: 90 dias - Premium: Ilimitado
Visualização
- Lista de execuções passadas
- Filtros por data, rota, tipo
- Detalhes de cada execução
- Replay no mapa (futuro)
Arquitetura de Dados
Estrutura no Firestore
plannings/
{planningId}/
- name: string
- type: 'outbound' | 'return'
- plannedStartTime: timestamp
- stops: array<Stop>
- businessOwnerId: string
- createdAt: timestamp
- updatedAt: timestamp
executions/
{executionId}/
- planningId: string (referência)
- planningSnapshot: map (dados no momento)
- startedAt: timestamp
- completedAt: timestamp | null
- status: 'in_progress' | 'completed' | 'canceled'
- totalDistance: number (km)
- totalDuration: number (minutos)
- businessOwnerId: string
boarding_events/ (subcoleção)
{eventId}/
- stopIndex: number
- passengerId: string
- timestamp: timestamp
- location: geopoint
Modelo de Parada (Stop)
class Stop {
final String id;
final int order;
final StopType type; // pickup, dropoff, institution
final String? passengerId;
final String? institutionId;
final Address address;
final DateTime? estimatedTime;
final DateTime? actualTime;
final StopStatus status;
}
Funcionalidades por Tier
Free Tier
- ✅ Criação ilimitada de planejamentos
- ✅ Execução com navegação
- ✅ Histórico 90 dias
- ✅ Otimização manual
- ✅ Visualização no mapa
- ✅ Timeline de execução
- ✅ Mensagens manuais pré-prontas
Premium Tier
- ✅ Tudo do Free
- ✅ Otimização automática (Google API)
- ✅ Histórico ilimitado
- ✅ Push Notifications automáticas
- ✅ Relatórios de execução
- ✅ Estatísticas de performance
- ✅ Exportação de dados
Fluxos de Uso
Criar Nova Rota
1. Usuário acessa "Rotas" → "Nova Rota"
2. Define informações básicas:
- Nome
- Tipo (Ida/Volta)
- Horário de início
3. Seleciona passageiros
4. Define ordem de paradas:
- Arrasta para reordenar OU
- Usa otimização automática (Premium)
5. Visualiza no mapa
6. Salva planejamento
Executar Rota
1. Usuário seleciona planejamento
2. Toca "Iniciar Rota"
3. Sistema cria execução
4. Usuário navega seguindo o mapa
5. Ao chegar em cada parada:
- Segura botão "Concluir Parada"
- Sistema registra timestamp
- (Premium) Envia notificação ao responsável
6. Ao concluir última parada:
- Rota marcada como completa
- Estatísticas calculadas
- Salva no histórico
Otimizar Rota (Premium)
1. Usuário cria/edita rota
2. Seleciona passageiros
3. Toca "Otimizar Rota"
4. Sistema:
- Envia requisição para Directions API
- Considera trânsito atual
- Calcula melhor ordem
- Atualiza paradas
5. Usuário revisa ordem sugerida
6. Aceita ou ajusta manualmente
7. Salva planejamento otimizado
Integração com Google Maps
APIs Utilizadas
Maps SDK for Flutter: - Visualização de mapas - Marcadores customizados - Polylines de rotas - Controles de zoom/pan
Directions API (Premium): - Cálculo de rotas otimizadas - Consideração de trânsito - Waypoints optimization - Estimativas de tempo
Places API: - Autocomplete de endereços - Geocoding (endereço → coordenadas) - Reverse geocoding (coordenadas → endereço)
Custos
| API | Uso | Custo | Tier |
|---|---|---|---|
| Maps SDK | Visualização | Gratuito | Free + Premium |
| Directions API | Otimização | R$ 1,00/usuário/mês | Premium |
| Places API | Autocomplete | Cache local | Free + Premium |
Marcadores Customizados
Tipos de Marcadores
Parada de Passageiro: - Número sequencial (1, 2, 3...) - Cor: Azul (pendente), Verde (concluída) - Tamanho: 42x42 pixels
Instituição: - Ícone de escola/casa - Cor: Laranja - Tamanho: 42x42 pixels
Posição Atual: - Ícone de van/carro - Cor: Vermelho - Atualização em tempo real
Exclusividade
- Parada de passageiro: Mostra número OU ícone de instituição
- Lógica similar à timeline
- Evita confusão visual
Notificações Automáticas (Premium)
Tipos de Notificações
Início de Rota: - Enviada ao iniciar execução - Para todos os responsáveis da rota - Mensagem: "Rota iniciada - Previsão de chegada: 08:30"
Chegada Iminente: - Enviada 5 minutos antes da parada - Apenas para responsável da próxima parada - Mensagem: "Chegando em 5 minutos"
Atraso: - Enviada se atraso > 10 minutos - Para responsáveis ainda não atendidos - Mensagem: "Rota atrasada - Nova previsão: 08:45"
Conclusão: - Enviada ao finalizar rota - Para todos os responsáveis - Mensagem: "Rota concluída - Todos os passageiros entregues"
Configurações
- Responsável pode ativar/desativar notificações
- Escolher canais (Push, Email, SMS)
- Definir horários de silêncio
Melhorias Futuras
Roadmap
Q2 2026: - [ ] Replay de execuções no mapa - [ ] Estatísticas de performance (tempo médio, distância) - [ ] Comparação de rotas (antes/depois otimização)
Q3 2026: - [ ] Rotas recorrentes (segunda a sexta) - [ ] Calendário de execuções - [ ] Integração com calendário escolar
Q4 2026: - [ ] App para pais (rastreamento em tempo real) - [ ] Chat motorista-pais - [ ] Avaliação de rotas
2027: - [ ] Modo offline (mapas em cache) - [ ] Rotas compartilhadas (múltiplos motoristas) - [ ] API de integração
Métricas de Sucesso
- Economia de Combustível: 10-20% (Premium)
- Economia de Tempo: 15-30 min/rota (Premium)
- Precisão de ETA: ±5 minutos
- Satisfação: NPS > 8
- Uso de Otimização: 70%+ dos usuários Premium
Documento: Gestão de Rotas
Versão: 1.0
Data: Janeiro 2026