Campos
Relacionamentos
- Relaciona-se com Cooperative por
cooperativeId. - Relaciona-se com TransportOperator por
transportOperatorId. - Relaciona-se opcionalmente com TripSchedule por
tripScheduleId. - Relaciona-se com Route por
routeId. - Relaciona-se com Vehicle por
vehicleId. - Relaciona-se com Driver por
driverId. - Relaciona-se com múltiplos Ticket.
- Relaciona-se com múltiplos TripStop.
- Relaciona-se com múltiplos TripItinerary.
- Relaciona-se com múltiplos TripEvent.
- Relaciona-se com múltiplos TripSeatSegment.
- Relaciona-se com múltiplos TripReview.
- Relaciona-se 1:1 com TripTracking.
Regras de Negócio
- Representa uma partida programada de uma rota aprovada.
- A Trip é materializada pela cooperativa, de forma avulsa ou a partir de uma TripSchedule.
tripScheduleIdficanullem viagens avulsas e preenchido quando a Trip nasceu de uma programação recorrente.- A chave
cooperativeId + transportOperatorId + departureAt + routeId + vehicleId + driverIdidentifica uma viagem materializada e evita duplicidade. - Antes de iniciar, o sistema deve validar:
- rota
ACTIVE; - TransportOperator autorizado na rota via TransportOperatorRoute;
- TransportOperator regular;
- veículo ativo e autorizado via VehicleTransportOperator;
- motorista com CNH válida e vínculo ativo via DriverTransportOperator;
- limite disponível na TransportOperatorRoutePolicy vigente.
- rota
Tripcriada ou agendada não consome cota.Tripiniciada pode reservar cota.Tripconcluída consome cota definitiva e pode gerar cálculo de subsídio por km.Tripcancelada libera reserva de cota e não consome cota definitiva.- Horários reais de execução devem ser derivados da sequência de TripStop, não duplicados na Trip.
- Quilometragem executada deve ser derivada de TripTrackingPoint ou do fechamento auditado em TransportOperatorSubsidySettlement, conforme a política vigente.
- O último ping GPS aceito fica em TripTracking.
- Trip não guarda campos de tracking diretamente.
- A Trip só deve aceitar atualização de tracking enquanto
status = IN_PROGRESS. - Se o app do motorista parar de enviar localização por tempo acima da tolerância operacional,
TripTracking.acceptedAtfica como fonte para detectar tracking desatualizado.