> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devmob.app.br/llms.txt
> Use this file to discover all available pages before exploring further.

# TripTrackingPoint

> Histórico append-only de pings GPS aceitos de uma viagem

`TripTrackingPoint` registra o histórico completo dos pings GPS aceitos durante uma [Trip](/data-modelling/operations/trip).

Ele não substitui [TripTracking](/data-modelling/operations/trip-tracking). `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](/data-modelling/operations/trip).
* Relaciona-se com [TripTracking](/data-modelling/operations/trip-tracking), quando o ponto também atualiza o último ping.
* Relaciona-se com [Cooperative](/data-modelling/tenant/cooperative).
* Relaciona-se com [TransportOperator](/data-modelling/tenant/transport-operator).
* Relaciona-se com [Driver](/data-modelling/fleet/driver).

## Regras de Negócio

* Cada ping GPS aceito cria um TripTrackingPoint.
* TripTrackingPoint é append-only: não deve ser atualizado para corrigir trajeto.
* `sequence` deve ser incremental por `tripId`.
* `acceptedAt` ordena 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`, `transportOperatorId` e `driverId` devem repetir o contexto da Trip no momento do aceite.
* O último TripTrackingPoint aceito deve refletir os mesmos dados do [TripTracking](/data-modelling/operations/trip-tracking) da Trip.
* Retenção, compactação ou arquivamento de pontos antigos deve preservar a rastreabilidade exigida pela operação.

## Example

```json theme={null}
{
  "tripTrackingPointId": "01980e33-5bf9-7c09-9f18-c0e7d87b7d12",
  "tripId": "0197a80f-2d8f-7710-b243-b67fb477a1c0",
  "tripTrackingId": "0197a812-12e1-77fb-a2d1-b6fbf0570f89",
  "cooperativeId": "0197a800-24e6-76a2-90ed-ff0f6fba7b0c",
  "transportOperatorId": "01980d30-6a3c-7a42-9182-17ad6324d3aa",
  "driverId": "0197a807-1ec7-75e8-8ff8-df64dd070046",
  "latitude": -23.55052,
  "longitude": -46.63331,
  "accuracyMeters": 12,
  "speedKmh": 42.7,
  "headingDegrees": 126.4,
  "source": "DRIVER_APP_BACKGROUND",
  "recordedAt": "2026-07-04T08:15:08.000Z",
  "acceptedAt": "2026-07-04T08:15:10.000Z",
  "sequence": 42,
  "createdAt": "2026-07-04T08:15:10.000Z"
}
```
