Skip to main content

Campos

CampoTipoDescrição
routeIdUUIDIdentificador único
companyIdUUIDReferência à empresa
originIdUUIDReferência ao Point de origem
destinationIdUUIDReferência ao Point de destino
distanceKmFloatDistância em quilômetros
estimatedDurationIntDuração estimada em minutos
statusRouteStatusStatus da rota
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 da última atualização
deletedByUUID?Usuário que removeu o registro, quando aplicável
deletedAtDateTime?Data de remoção

Relacionamentos

  • Relaciona-se com Company
  • Relaciona-se com Point as origin (originId)
  • Relaciona-se com Point as destination (destinationId)
  • Relaciona-se com múltiplos Trip
  • Relaciona-se com múltiplos RouteApproval

Regras de Negócio

  • Representa um par fixo de origem e destino, ambos referenciando o catálogo global de Point.
  • Nome e coordenadas de origem/destino vivem em Point — não são duplicados em Route.
  • O veículo e o motorista são atribuídos por viagem (Trip), não por rota.
  • A duração estimada é armazenada em minutos (Int).
  • A rota nasce com status = PENDING_APPROVAL.
  • A rota só deve sair de PENDING_APPROVAL por meio de RouteApproval.
  • Rotas ACTIVE podem ser usadas em trips e venda.
  • Rotas INACTIVE não devem ser usadas em novas trips.

Enums

RouteStatus

ValorDescrição
PENDING_APPROVALRota criada e pendente de aprovação
ACTIVERota ativa
INACTIVERota inativa

Example

{
  "routeId": "0197a80c-4204-7b77-9005-48cc23677587",
  "companyId": "0197a801-6a42-79aa-9e56-d3c85148c0fa",
  "originId": "0197a80b-3f5c-7f5c-86e9-ff4f8a6ce1dc",
  "destinationId": "0197a80c-a9dd-75e6-b5fa-72876924256d",
  "distanceKm": 315.4,
  "estimatedDuration": 270,
  "status": "PENDING_APPROVAL",
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-03T15:10:00.000Z",
  "updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "updatedAt": "2026-07-03T15:10:00.000Z",
  "deletedBy": null,
  "deletedAt": null
}