Skip to main content
TransportOperatorRoutePolicy centraliza a vigência, o subsídio por quilômetro e o limite de viagens de um permissionário em uma rota.

Persistência

PropriedadeValor
Tabelatransport_operator_route_policies
ExclusãoLógica, por deletedAt

Campos

CampoTipoDescrição
transportOperatorRoutePolicyIdUUIDIdentificador único
transportOperatorIdUUIDPermissionário ao qual a política se aplica
routeIdUUIDRota à qual a política se aplica
startAtDateTimeInício da vigência
endAtDateTimeFim da vigência
subsidyAmountPerKmIntValor do subsídio por quilômetro em centavos
distanceSourceDistanceSourceFonte da distância usada no cálculo do subsídio
tripLimitIntQuantidade máxima de viagens na vigência
createdAtDateTimeData de criação
updatedAtDateTimeData da última atualização
deletedAtDateTime?Data de remoção lógica

Relacionamentos

Regras de Negócio

  • A política é única por transportOperatorId, routeId e vigência.
  • Vigências ativas do mesmo permissionário e rota não podem se sobrepor.
  • endAt deve ser posterior a startAt.
  • subsidyAmountPerKm é armazenado em centavos; 200 representa R$ 2,00 por quilômetro.
  • tripLimit deve ser maior que zero.
  • Apenas Trips dentro da vigência participam do limite e do cálculo de subsídio.
  • Uma Trip concluída usa a mesma política para consumir o limite operacional e gerar a apuração financeira.

Enums

DistanceSource

ValorDescrição
PLANNED_ROUTEUsa Route.distanceKm aprovado
GPS_AUDITEDUsa distância auditada por GPS
ODOMETER_AUDITEDUsa distância auditada por hodômetro
COMBINED_AUDITUsa regra combinada entre rota, GPS e hodômetro

Example

{
  "transportOperatorRoutePolicyId": "01980d36-4381-7c81-8786-230f12cb35c0",
  "transportOperatorId": "01980d30-6a3c-7a42-9182-17ad6324d3aa",
  "routeId": "0197a80c-4204-7b77-9005-48cc23677587",
  "startAt": "2026-07-01T00:00:00.000Z",
  "endAt": "2026-07-31T23:59:59.999Z",
  "subsidyAmountPerKm": 200,
  "distanceSource": "COMBINED_AUDIT",
  "tripLimit": 80,
  "createdAt": "2026-07-01T09:30:00.000Z",
  "updatedAt": "2026-07-01T09:30:00.000Z",
  "deletedAt": null
}