Skip to main content

Campos

Relacionamentos

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.
  • tripScheduleId fica null em viagens avulsas e preenchido quando a Trip nasceu de uma programação recorrente.
  • A chave cooperativeId + transportOperatorId + departureAt + routeId + vehicleId + driverId identifica uma viagem materializada e evita duplicidade.
  • Antes de iniciar, o sistema deve validar:
  • Trip criada ou agendada não consome cota.
  • Trip iniciada pode reservar cota.
  • Trip concluída consome cota definitiva e pode gerar cálculo de subsídio por km.
  • Trip cancelada 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.acceptedAt fica como fonte para detectar tracking desatualizado.

Enums

TripStatus

Example