> ## 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.

# Trip Tracking

> Rastreamento GPS atual e histórico completo de trajeto da viagem.

Trip Tracking cobre duas leituras diferentes da localização de uma viagem:

| Leitura            | Entidade                                                            | Uso                                                                     |
| ------------------ | ------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| Último ping aceito | [TripTracking](/data-modelling/operations/trip-tracking)            | Realtime, mapa ao vivo e detecção de tracking desatualizado.            |
| Histórico completo | [TripTrackingPoint](/data-modelling/operations/trip-tracking-point) | Trajeto percorrido, auditoria, análise de quilometragem e investigação. |

## Fluxo

```mermaid theme={null}
flowchart TD
    DRIVER["App do motorista envia ping"] --> VALIDATE["Backend valida Trip, motorista e coordenadas"]
    VALIDATE --> POINT["Cria TripTrackingPoint"]
    POINT --> LATEST["Atualiza TripTracking"]
    LATEST --> REALTIME["Mapa ao vivo usa último ping"]
    POINT --> HISTORY["Mapa histórico reconstrói trajeto"]
```

## Regras

| Regra                | Descrição                                                          |
| -------------------- | ------------------------------------------------------------------ |
| Status da Trip       | GPS só é aceito quando a Trip está `IN_PROGRESS`.                  |
| Motorista autorizado | O ping precisa vir do Driver vinculado à Trip.                     |
| Última posição       | TripTracking mantém apenas a posição mais recente aceita.          |
| Histórico completo   | Cada ping aceito cria um TripTrackingPoint append-only.            |
| Ordenação            | O trajeto é reconstruído por `sequence` e `acceptedAt`.            |
| Rejeições            | Pings inválidos não entram no histórico aceito.                    |
| Encerramento         | Ao concluir ou cancelar a Trip, novos pings deixam de ser aceitos. |

## Consultas

```http theme={null}
GET /api/v1/ops/trips/{tripId}/tracking
GET /api/v1/ops/trips/{tripId}/tracking-points
GET /api/v1/customer/trips/{tripId}/tracking
GET /api/v1/customer/trips/{tripId}/tracking-points
```

OPS usa o histórico para operação, auditoria e análise. Customer pode usar a leitura permitida para acompanhar uma viagem comprada, respeitando autorização pelo ticket/order.

## Relação com auditoria de quilometragem

O histórico não calcula fraude sozinho. Ele fornece a base factual para comparar:

* trajeto planejado da Route;
* pings aceitos durante a Trip;
* distância estimada da rota;
* distância reconstruída pelo histórico;
* eventos operacionais registrados na viagem.
