# 📋 Documentação Técnica - Módulo de Rotas ## ERP SAAS para Transportadoras --- ## 🎯 Visão Geral do Módulo O módulo **Rotas** é o núcleo operacional do sistema, conectando todos os elementos já existentes (motoristas, veículos, rastreamento) em um fluxo completo de gestão de viagens de transporte. ### Integração com Módulos Existentes: - ✅ **Motoristas**: Atribuição automática e manual - ✅ **Veículos**: Vinculação com telemetria em tempo real - ✅ **Rastreamento**: Monitoramento GPS contínuo - ✅ **App Mobile**: Sincronização bidirecional de status ### Localização no Sistema: - **Sidebar**: "Rotas" - **Ícone**: `fa-route` - **Ordem**: Após "Veículos" e "Motoristas" --- ## 🏗️ Estrutura de Dados (camelCase) ### 📊 Entidade Principal: `Route` ```typescript interface Route { // Identificação id: string; routeNumber: string; // Ex: "RT-2024-001234" // Classificação type: 'firstMile' | 'lineHaul' | 'lastMile'; modal: 'rodoviario' | 'aereo' | 'aquaviario'; priority: 'normal' | 'express' | 'urgent'; // Participantes driverId: string; vehicleId: string; companyId: string; customerId: string; // Trajeto origin: { address: string; coordinates: { lat: number; lng: number }; contact: string; phone: string; }; destination: { address: string; coordinates: { lat: number; lng: number }; contact: string; phone: string; }; // Cronograma scheduledDeparture: Date; actualDeparture?: Date; estimatedArrival: Date; actualArrival?: Date; // Status operacional status: 'pending' | 'inProgress' | 'completed' | 'delayed' | 'cancelled'; currentLocation?: { lat: number; lng: number }; // Financeiro contractId: string; tablePricesId: string; totalValue: number; totalWeight: number; // em kg estimatedCost: number; actualCost?: number; // Produto productType: string; // Ex: "Medicamentos", "Eletrônicos", "Alimentos" // Metadados createdAt: Date; updatedAt: Date; createdBy: string; } ``` ### 📦 Entidades Relacionadas #### `RouteStop` (Paradas da Rota) ⚠️ **ATUALIZADO - Ver especificação completa** ```typescript interface RouteStop { id: string; routeId: string; sequence: number; type: 'pickup' | 'delivery' | 'rest' | 'fuel'; location: { address: string; coordinates: { lat: number; lng: number }; contact?: string; phone?: string; cep?: string; city?: string; state?: string; }; scheduledTime: Date; actualTime?: Date; status: 'pending' | 'completed' | 'failed' | 'skipped'; // Dados específicos de entrega/coleta packages?: number; weight?: number; volume?: number; referenceNumber?: string; // 📄 NOVO: Documento Fiscal Integrado fiscalDocument?: FiscalDocument; // Evidências do app mobile photos?: string[]; signature?: string; notes?: string; completionEvidence?: { photoPackage: string; photoReceipt: string; digitalSignature: string; recipientName: string; completionTime: Date; }; } // 📄 NOVA Interface para Documentos Fiscais interface FiscalDocument { fiscalDocumentId: string; documentType: 'NFe' | 'NFCe'; documentNumber: string; series: string | null; accessKey: string | null; issueDate: Date; totalValue: number; productType: string; status: 'pending' | 'validated' | 'error'; createdAt: Date; updatedAt: Date; } ``` **📋 Especificação Completa**: Ver [ROUTE_STOPS_MODULE_SPECIFICATION.md](./ROUTE_STOPS_MODULE_SPECIFICATION.md) #### `RouteCost` (Custos da Rota) ```typescript interface RouteCost { id: string; routeId: string; type: 'fuel' | 'toll' | 'parking' | 'fine' | 'maintenance' | 'other'; description: string; amount: number; currency: 'BRL'; // Vinculação automática por telemetria autoDetected: boolean; vehicleTrackingEventId?: string; // Dados da transação transactionDate: Date; location?: { lat: number; lng: number }; receiptPhoto?: string; // Aprovação status: 'pending' | 'approved' | 'rejected'; approvedBy?: string; approvedAt?: Date; } ``` #### `RouteDocument` (Documentos da Rota) ```typescript interface RouteDocument { id: string; routeId: string; type: 'cte' | 'nfe' | 'deliveryProof' | 'receipt' | 'fine' | 'other'; name: string; fileUrl: string; fileSize: number; mimeType: string; uploadedBy: string; uploadedAt: Date; source: 'web' | 'mobile' | 'automatic'; } ``` --- ## 🖥️ Interface do Usuário ### 📋 Tela Principal - Lista de Rotas **Layout baseado nas imagens de referência:** #### Filtros Avançados: ```typescript interface RouteFilters { dateRange: { start: Date; end: Date }; status: RouteStatus[]; driverId?: string; vehicleId?: string; type?: RouteType[]; modal?: RouteModal[]; originCity?: string; destinationCity?: string; customerId?: string; productType?: string; } ``` #### Colunas da Tabela: 1. **Ações** (checkbox, editar) 2. **ID** (routeNumber) 3. **Tipo** (badge colorido: First Mile 🟢, Line Haul 🟠, Last Mile 🔵) 4. **Cliente/Embarcador** 5. **Origem → Destino** 6. **Status** (badge: Pendente, Em Trânsito, Entregue, Atrasada) 7. **Data/Hora Início** 8. **Motorista** 9. **Veículo** (placa) 10. **Valor** (totalValue) 11. **Peso** (totalWeight) 12. **Produto** (productType) #### Estados de Status: - 🟡 **Pending**: Rota criada, aguardando início - 🔵 **InProgress**: Veículo em movimento - 🟢 **Completed**: Rota finalizada com sucesso - 🔴 **Delayed**: Passou do prazo estimado - ⚫ **Cancelled**: Rota cancelada ### 📍 Tela de Detalhes da Rota **Estrutura em abas (baseada no padrão do sistema):** #### Aba 1: Dados Básicos - Informações gerais da rota - Origem e destino - Cronograma planejado vs real - Status atual - Dados do contrato e tabela de preços #### Aba 2: Localização - **Mapa em tempo real** com posição atual do veículo - Histórico de trajeto - Paradas planejadas vs realizadas - Alertas de desvio de rota #### Aba 3: Paradas - Lista de todas as paradas (coletas/entregas) - Status de cada parada - Evidências fotográficas do app mobile - Assinaturas digitais #### Aba 4: Custos - Custos automáticos (combustível, pedágios) - Custos manuais inseridos - Aprovação de custos - Margem de lucro da rota #### Aba 5: Documentos - CT-e, NF-e - Fotos de entrega - Comprovantes de custos - Relatórios gerados #### Aba 6: Histórico - Log de alterações de status - Comunicações com motorista - Eventos de telemetria relevantes --- ## 📱 Integração com App Mobile ### Sincronização Bidirecional: #### Do Web para Mobile: - Nova rota atribuída ao motorista - Alterações no cronograma - Novas paradas adicionadas - Instruções especiais #### Do Mobile para Web: - Início/fim da rota - Check-in em paradas - Fotos de entrega - Assinaturas digitais - Ocorrências (atraso, problema) ### Eventos do App Mobile: ```typescript interface MobileRouteEvent { id: string; routeId: string; driverId: string; type: 'routeStarted' | 'stopArrived' | 'deliveryCompleted' | 'pickupCompleted' | 'routeCompleted' | 'incidentReported'; timestamp: Date; location: { lat: number; lng: number }; data: { photos?: string[]; signature?: string; recipientName?: string; notes?: string; incidentType?: string; }; } ``` --- ## 🔄 Fluxo Operacional ### 1. Criação da Rota 1. **Planejamento**: Definir origem, destino, paradas 2. **Atribuição**: Selecionar motorista e veículo 3. **Cronograma**: Definir horários de partida e chegada 4. **Contrato**: Vincular contractId e tablePricesId 5. **Aprovação**: Validar rota antes do envio ### 2. Execução da Rota 1. **Notificação**: Motorista recebe rota no app 2. **Início**: Motorista confirma saída 3. **Monitoramento**: Tracking GPS contínuo 4. **Paradas**: Check-in/out em cada localização 5. **Evidências**: Fotos e assinaturas coletadas ### 3. Finalização 1. **Chegada**: Confirmação de entrega final 2. **Custos**: Reconciliação de gastos 3. **Documentação**: Upload de comprovantes 4. **Fechamento**: Análise financeira da rota --- ## 💰 Gestão Financeira ### Custos Automáticos (via Telemetria): - **Combustível**: Baseado em consumo real do veículo - **Pedágios**: Detecção automática por localização - **Tempo de motor ligado**: Custos operacionais ### Custos Manuais: - Estacionamentos - Refeições - Manutenções emergenciais - Multas ### Receitas: - Valor do frete (totalValue) - Taxas adicionais - Bonificações por performance ### Indicadores: - **Margem da Rota**: (totalValue - actualCost) / totalValue - **Custo por KM**: actualCost / Distância percorrida - **Custo por KG**: actualCost / totalWeight - **ROI por Veículo**: Análise de rentabilidade --- ## 🚨 Alertas e Notificações ### Alertas Automáticos: - **Atraso**: Rota com mais de 30min de atraso - **Desvio**: Veículo fora da rota planejada - **Parada Prolongada**: Mais de 2h parado sem justificativa - **Combustível**: Nível baixo detectado ### Notificações para Stakeholders: - **Cliente**: Status de entrega atualizado - **Motorista**: Novas instruções ou alterações - **Gestor**: Relatórios de performance - **Financeiro**: Custos que excedem orçamento --- ## 📊 Relatórios e Analytics ### Dashboards: 1. **Operacional**: Rotas em andamento, atrasos, performance 2. **Financeiro**: Custos, receitas, margens por período 3. **Motoristas**: Ranking, eficiência, cumprimento de prazos 4. **Veículos**: Utilização, consumo, manutenções ### Relatórios Exportáveis: - Relatório de rota individual (PDF) - Planilha de custos por período - Análise de performance de motoristas - Relatório de compliance (documentação) --- ## 🔧 Aspectos Técnicos ### APIs Necessárias: - **Geocoding**: Conversão endereço ↔ coordenadas - **Routing**: Cálculo de rotas otimizadas - **Telemetria**: Integração com rastreadores - **CTe/NFe**: Integração com SEFAZ para documentos fiscais ### Integrações: - **ERP Clientes**: Importação automática de pedidos - **Sistemas de Pagamento**: Cobrança automática - **WhatsApp Business**: Notificações para clientes - **Sistemas de Combustível**: Cartões corporativos ### Performance: - Cache de rotas ativas para consulta rápida - Indexação por data, status, motorista, veículo - Compressão de imagens do mobile - Sincronização offline no app mobile --- ## 🎯 Próximos Passos de Implementação ### Fase 1 - MVP: 1. ✅ CRUD básico de rotas 2. ✅ Atribuição motorista/veículo 3. ✅ Tracking GPS básico 4. ✅ Status manual no app mobile ### Fase 2 - Operacional: 1. 🔄 Sistema de paradas 2. 🔄 Upload de evidências (fotos/assinaturas) 3. 🔄 Gestão de custos 4. 🔄 Relatórios básicos ### Fase 3 - Avançado: 1. ⏳ Alertas automáticos 2. ⏳ Otimização de rotas 3. ⏳ Integração fiscal (CTe) 4. ⏳ Analytics avançados --- ## 📋 Checklist de Funcionalidades ### Interface Web: - [ ] Lista de rotas com filtros avançados - [ ] Formulário de criação/edição de rota - [ ] Visualização em mapa (tempo real) - [ ] Gestão de paradas - [ ] Upload de documentos - [ ] Relatórios financeiros - [ ] Dashboard operacional ### App Mobile: - [ ] Lista de rotas do motorista - [ ] Navegação integrada - [ ] Check-in/out em paradas - [ ] Captura de fotos - [ ] Assinatura digital - [ ] Relatório de ocorrências - [ ] Modo offline ### Integrações: - [ ] API de rastreamento - [ ] Geocoding/routing - [ ] Sincronização web ↔ mobile - [ ] Notificações push - [ ] Integração financeira - [ ] Backup automático --- ## 📈 Dados Mockados (500 Rotas) ### Distribuição por Tipo: - **First Mile**: 60% (300 rotas) - Coleta em centros de distribuição - **Line Haul**: 25% (125 rotas) - Transporte entre cidades - **Last Mile**: 15% (75 rotas) - Entrega final (Mercado Livre, Shopee, Amazon) ### Distribuição por Modal: - **Rodoviário**: 95% (475 rotas) - **Aéreo**: 3% (15 rotas) - **Aquaviário**: 2% (10 rotas) ### Distribuição por Status: - **Pending**: 10% (50 rotas) - **InProgress**: 40% (200 rotas) - **Completed**: 35% (175 rotas) - **Delayed**: 10% (50 rotas) - **Cancelled**: 5% (25 rotas) ### Regiões Contempladas: - **Rio de Janeiro**: 30% (150 rotas) - **São Paulo**: 35% (175 rotas) - **Minas Gerais**: 25% (125 rotas) - **Vitória/ES**: 10% (50 rotas) ### Tipos de Produtos: - Medicamentos - Eletrônicos - Alimentos Perecíveis - Alimentos Não Perecíveis - Roupas e Acessórios - Livros e Papelaria - Casa e Decoração - Cosméticos - Automotive - Brinquedos ### Características das Rotas Last Mile: - **Endereços residenciais** em bairros urbanos - **Marketplace**: Mercado Livre (40%), Shopee (35%), Amazon (25%) - **Veículos menores**: Van, Veículo de Passeio, Rental Utilitário - **Peso médio**: 2-15kg por entrega - **Valor médio**: R$ 25,00 - R$ 150,00 ### Placas de Veículos Reais: Utilizando dados do arquivo `mercado-lives_export.csv`: - TAS4J92, MSO5821, TAS2F98, RJZ7H79, TAO3J98 - TAN6I73, SGD4H03, NGF2A53, TAS2F32, RTT1B46 - EZQ2E60, TDZ4J93, SGL8D98, TAS2F83, RVC0J58 - E mais 250+ placas reais do sistema --- Esta documentação serve como base para o desenvolvimento do módulo de Rotas, mantendo consistência com os padrões já estabelecidos no sistema e aproveitando as integrações existentes.