Skip to main content
Uma Route representa um par fixo de origem-destino sob responsabilidade de uma cooperativa. A rota pode ser criada pela própria cooperativa ou ter um permissionário de origem. 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

Regras de Negócio

  • Uma Route pertence a exatamente uma Cooperative, responsável por sua criação e escopo.
  • transportOperatorId registra a origem quando a rota é proposta por um permissionário da cooperativa.
  • O campo de origem não autoriza operação. O uso da rota por qualquer permissionário fica em TransportOperatorRoute.
  • 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 cooperativa e servem como referência para precificação, subsídio 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

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. A Trip escolhe um permissionário autorizado para operar essa rota. 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 cooperativa opera a mesma linha todo dia, ela cria a rota uma vez, vincula os permissionários autorizados e agenda múltiplas viagens.