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

> Viagens programadas combinando rota, veículo e motorista

## Campos

| Campo                | Tipo         | Descrição                                              |
| -------------------- | ------------ | ------------------------------------------------------ |
| `tripId`             | `UUID`       | Identificador único                                    |
| `companyId`          | `UUID`       | Referência à empresa                                   |
| `routeId`            | `UUID`       | Referência à rota                                      |
| `vehicleId`          | `UUID`       | Referência ao veículo                                  |
| `driverId`           | `UUID`       | Referência ao motorista                                |
| `departureAt`        | `DateTime`   | Data e hora de partida                                 |
| `estimatedArrivalAt` | `DateTime`   | Data e hora estimada de chegada                        |
| `status`             | `TripStatus` | Status da viagem                                       |
| `createdBy`          | `UUID?`      | Usuário que criou o registro, quando aplicável         |
| `createdAt`          | `DateTime`   | Data de criação                                        |
| `updatedBy`          | `UUID?`      | Usuário que fez a última atualização, quando aplicável |
| `updatedAt`          | `DateTime`   | Data da última atualização                             |
| `deletedBy`          | `UUID?`      | Usuário que removeu o registro, quando aplicável       |
| `deletedAt`          | `DateTime?`  | Data de remoção                                        |

## Relacionamentos

* Relaciona-se com [Company](/data-modelling/tenant/company)
* Relaciona-se com [Route](/data-modelling/operations/route)
* Relaciona-se com [Vehicle](/data-modelling/fleet/vehicle)
* Relaciona-se com [Driver](/data-modelling/fleet/driver)
* Relaciona-se com múltiplos [Ticket](/data-modelling/sales/ticket)
* Relaciona-se com múltiplos [TripStop](/data-modelling/operations/trip-stop)
* Relaciona-se com múltiplos [TripItinerary](/data-modelling/operations/trip-itinerary)
* Relaciona-se com múltiplos [TripEvent](/data-modelling/operations/trip-event)
* Relaciona-se com múltiplos [TripSeatSegment](/data-modelling/operations/trip-seat-segment)
* Relaciona-se com múltiplos [TripReview](/data-modelling/operations/trip-review)
* Relaciona-se 1:1 com [TripTracking](/data-modelling/operations/trip-tracking)

## Regras de Negócio

* Representa uma partida programada combinando rota + veículo + motorista.
* Criada pela empresa de transporte (avulsa ou materializada por uma [TripSchedule](/data-modelling/operations/trip-schedule)) e disponibilizada para venda.
* A chave `companyId + departureAt + routeId + vehicleId + driverId` identifica uma viagem materializada e evita duplicidade.
* O último ping GPS aceito fica em [TripTracking](/data-modelling/operations/trip-tracking).
* Trip não guarda campos de tracking diretamente.
* A Trip só deve aceitar atualização de tracking enquanto `status = IN_PROGRESS`.
* Se o app do motorista parar de enviar localização por tempo acima da tolerância operacional, `TripTracking.acceptedAt` fica como fonte para detectar tracking desatualizado.

## Enums

### TripStatus

| Valor         | Descrição                           |
| ------------- | ----------------------------------- |
| `SCHEDULED`   | Viagem agendada, ainda não iniciada |
| `IN_PROGRESS` | Viagem em andamento                 |
| `COMPLETED`   | Viagem concluída                    |
| `CANCELLED`   | Viagem cancelada                    |

## Example

```json theme={null}
{
  "tripId": "0197a80f-2d8f-7710-b243-b67fb477a1c0",
  "companyId": "0197a801-6a42-79aa-9e56-d3c85148c0fa",
  "routeId": "0197a80c-4204-7b77-9005-48cc23677587",
  "vehicleId": "0197a809-3eb8-7eb8-9c4f-8a6c2e7e5b1a",
  "driverId": "0197a807-1ec7-75e8-8ff8-df64dd070046",
  "departureAt": "2026-07-04T08:00:00.000Z",
  "estimatedArrivalAt": "2026-07-04T12:30:00.000Z",
  "status": "IN_PROGRESS",
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-03T15:30:00.000Z",
  "updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "updatedAt": "2026-07-03T15:30:00.000Z",
  "deletedBy": null,
  "deletedAt": null
}
```
