Campos
| Campo | Tipo | Descrição |
|---|---|---|
tripId | UUID | Identificador único |
companyId | UUID | Referência à empresa |
routeId | UUID | Referência à rota |
vehicleId | UUID | Referência ao veículo |
driverId | UUID | Referência ao motorista |
departureAt | DateTime | Data e hora de partida |
estimatedArrivalAt | DateTime | Data e hora estimada de chegada |
status | TripStatus | Status da viagem |
createdBy | UUID? | Usuário que criou o registro, quando aplicável |
createdAt | DateTime | Data de criação |
updatedBy | UUID? | Usuário que fez a última atualização, quando aplicável |
updatedAt | DateTime | Data da última atualização |
deletedBy | UUID? | Usuário que removeu o registro, quando aplicável |
deletedAt | DateTime? | Data de remoção |
Relacionamentos
- Relaciona-se com Company
- Relaciona-se com Route
- Relaciona-se com Vehicle
- Relaciona-se com Driver
- 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 combinando rota + veículo + motorista.
- Criada pela empresa de transporte (avulsa ou materializada por uma TripSchedule) e disponibilizada para venda.
- A chave
companyId + departureAt + routeId + vehicleId + driverIdidentifica uma viagem materializada e evita duplicidade. - 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.
Enums
TripStatus
| Valor | Descrição |
|---|---|
SCHEDULED | Viagem agendada, ainda não iniciada |
IN_PROGRESS | Viagem em andamento |
COMPLETED | Viagem concluída |
CANCELLED | Viagem cancelada |