TripTrackingPoint registra o histórico completo dos pings GPS aceitos durante uma Trip.
Ele não substitui TripTracking. TripTracking guarda apenas o último ping aceito para leitura rápida; TripTrackingPoint guarda o trajeto completo para mapa, auditoria, análise de quilometragem e investigação posterior.
Campos
| Campo | Tipo | Descrição |
|---|---|---|
tripTrackingPointId | UUID | Identificador único |
tripId | UUID | Viagem relacionada |
tripTrackingId | UUID? | Último registro 1:1 atualizado pelo mesmo ping, quando existir |
cooperativeId | UUID | Cooperativa da Trip |
transportOperatorId | UUID | Permissionário da Trip |
driverId | UUID | Motorista que enviou o ping |
latitude | Float | Latitude aceita |
longitude | Float | Longitude aceita |
accuracyMeters | Int? | Precisão reportada em metros |
speedKmh | Float? | Velocidade reportada |
headingDegrees | Float? | Direção reportada, em graus |
source | TripTrackingSource | Origem do ping |
recordedAt | DateTime? | Data/hora informada pelo dispositivo |
acceptedAt | DateTime | Data/hora em que o backend aceitou o ping |
sequence | Int | Ordem do ping dentro da Trip |
createdAt | DateTime | Data de criação |
Relacionamentos
- Relaciona-se com Trip.
- Relaciona-se com TripTracking, quando o ponto também atualiza o último ping.
- Relaciona-se com Cooperative.
- Relaciona-se com TransportOperator.
- Relaciona-se com Driver.
Regras de Negócio
- Cada ping GPS aceito cria um TripTrackingPoint.
- TripTrackingPoint é append-only: não deve ser atualizado para corrigir trajeto.
sequencedeve ser incremental portripId.acceptedAtordena o histórico quando houver diferença entre relógio do dispositivo e backend.- O histórico só recebe pings quando a Trip está
IN_PROGRESS. - Pings rejeitados por status, coordenada inválida ou autorização não entram no histórico aceito.
cooperativeId,transportOperatorIdedriverIddevem repetir o contexto da Trip no momento do aceite.- O último TripTrackingPoint aceito deve refletir os mesmos dados do TripTracking da Trip.
- Retenção, compactação ou arquivamento de pontos antigos deve preservar a rastreabilidade exigida pela operação.