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

# TripReview

> Avaliação de uma viagem comprada dentro de um pedido

O `TripReview` representa a avaliação de uma [Trip](/data-modelling/operations/trip) comprada dentro de um [Order](/data-modelling/sales/order). O Order define a elegibilidade da compra; a Trip é a experiência avaliada.

## Campos

| Campo            | Tipo       | Descrição                                              |
| ---------------- | ---------- | ------------------------------------------------------ |
| `tripReviewId`   | `UUID`     | Identificador único                                    |
| `tripId`         | `UUID`     | Viagem avaliada                                        |
| `orderId`        | `UUID`     | Pedido que originou a viagem avaliada                  |
| `customerId`     | `UUID`     | Cliente que avaliou                                    |
| `driverId`       | `UUID`     | Motorista avaliado                                     |
| `companyId`      | `UUID`     | Empresa avaliada                                       |
| `driverRating`   | `Int`      | Nota do motorista (1 a 5)                              |
| `driverComment`  | `String?`  | Comentário sobre o motorista                           |
| `companyRating`  | `Int`      | Nota da empresa (1 a 5)                                |
| `companyComment` | `String?`  | Comentário sobre a empresa                             |
| `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                             |

## Relacionamentos

* Relaciona-se com Customer
* Relaciona-se com [Trip](/data-modelling/operations/trip)
* Relaciona-se com [Order](/data-modelling/sales/order)
* Relaciona-se indiretamente com [Checkout](/data-modelling/sales/checkout) via `Order.checkoutId`
* Relaciona-se com [Driver](/data-modelling/fleet/driver)
* Relaciona-se com [Company](/data-modelling/tenant/company)
* Pode originar [SupportCase](/data-modelling/support/support-case), quando o passageiro usa o botão de contato na revisão

## Regras de Negócio

* Registro único por viagem dentro do pedido: `tripId + orderId` deve ser único.
* Um Order pode ter múltiplos TripReviews, um para cada Trip comprada.
* Um checkout pode ter múltiplos TripReviews indiretamente pelos Orders gerados.
* `checkoutId` não deve ser duplicado nesta entidade; ele é derivado por `orderId -> Order.checkoutId`.
* A avaliação cobre a experiência daquela Trip.
* Cada nota (`rating`) é um inteiro de **1 a 5**.
* Só pode ser criada quando o pedido está `PAID`, possui um ticket `VALID` da mesma Trip já embarcado e a Trip está `COMPLETED`.
* A resposta/tratativa operacional da avaliação não fica em TripReview. Quando o passageiro usa o botão de contato, o atendimento deve ser registrado em [SupportCase](/data-modelling/support/support-case) com `relatedTripReviewId`.

Veja o fluxo de elegibilidade em [Trip Review](/domain/operations/trip-reviews).

## Example

```json theme={null}
{
  "tripReviewId": "0197a815-0fcf-704b-b703-f460b25515d4",
  "tripId": "0197a80f-2d8f-7710-b243-b67fb477a1c0",
  "orderId": "0197a813-0fb9-7d42-9c81-50c0f6d9ae5a",
  "customerId": "0197a7f6-4d36-7c0a-a7cb-54fcb33a3148",
  "driverId": "0197a807-1ec7-75e8-8ff8-df64dd070046",
  "companyId": "0197a801-6a42-79aa-9e56-d3c85148c0fa",
  "driverRating": 5,
  "driverComment": "Motorista pontual e cuidadoso.",
  "companyRating": 4,
  "companyComment": "Viagem confortável e bem organizada.",
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-04T13:10:00.000Z",
  "updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "updatedAt": "2026-07-04T13:10:00.000Z"
}
```
