Skip to main content
Uma Route representa um par fixo de origem-destino definido por uma empresa de transporte. Rotas são reutilizáveis — a mesma rota pode ser usada em múltiplas viagens. Origem e destino são referências ao catálogo global de Points.

Campos

CampoTipoDescrição
routeIdUUIDIdentificador único
companyIdUUIDEmpresa dona da rota
originIdUUIDReferência ao Point de origem
destinationIdUUIDReferência ao Point de destino
distanceKmdecimalDistância em quilômetros
estimatedDurationintegerDuração estimada do trajeto em minutos
statusRouteStatusStatus da rota (PENDING_APPROVAL, ACTIVE ou INACTIVE)
createdByUUID?Usuário que criou o registro, quando aplicável
createdAtdatetimeData de criação
updatedByUUID?Usuário que fez a última atualização, quando aplicável
updatedAtdatetimeData de última atualização
deletedByUUID?Usuário que removeu o registro, quando aplicável
deletedAtdatetime?Data de remoção

Regras de Negócio

  • Uma Route pertence a exatamente uma Company (resolvida a partir da organização autenticada na criação).
  • A rota define apenas os pontos extremos (origem e destino) via originId e destinationId. Os pontos intermediários são representados pelos TripStops das viagens; TripItineraries criam os pares compráveis entre essas paradas.
  • originId e destinationId apontam para entradas do catálogo global de Point — nome e coordenadas vêm da entidade Point, não são duplicados em Route. A criação valida que ambos os Points existem.
  • A distância (distanceKm) e a duração estimada (estimatedDuration, em minutos) são informadas pela empresa e servem como referência para precificação e planejamento — não são calculadas pelo route preview.
  • A rota nasce com status = PENDING_APPROVAL.
  • A rota só deve virar ACTIVE por aprovação registrada em RouteApproval.
  • Rotas ACTIVE podem ser usadas em trips e vendas. Rotas INACTIVE ficam fora de novas operações.
  • Uma rota com viagens ativas (SCHEDULED ou IN_PROGRESS) não pode ser excluída: a exclusão é bloqueada com has_active_trips.
  • O acesso é escopado por organização; uma rota de outra organização retorna 404.

Aprovação

EtapaAtorEfeito
CriaçãoCompanyRoute nasce PENDING_APPROVAL com origem, destino, distância e duração estimada.
AnáliseUsuário autorizadoDados da rota são revisados.
AprovaçãoUsuário autorizadoRouteApproval registra decisão e Route vira ACTIVE.
RejeiçãoUsuário autorizadoRouteApproval registra motivo e a Route permanece PENDING_APPROVAL, fora de operação.
A permission de aprovar fica no domínio de Authorization. O domínio de Operations registra o fluxo operacional e o efeito sobre a Route.

Relação com Point, Trip e TripItinerary

A rota define o trajeto macro (São Paulo → Rio de Janeiro) através de Points do catálogo global. Uma viagem possui TripStops (paradas físicas) e oferece múltiplos TripItineraries (trechos parciais compráveis) que referenciam pares de paradas.
Rotas são entidades de referência — elas não mudam a cada viagem. Se uma empresa opera a mesma linha todo dia, ela cria a rota uma vez (referenciando dois Points existentes) e agenda múltiplas viagens para ela.