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

> Avaliação da viagem pelo cliente: elegibilidade e notas para motorista e empresa.

A **TripReview** é a avaliação que o cliente faz após uma viagem. É um registro único por `tripId + orderId`.

O Order prova a compra. A Trip é a experiência avaliada.

## Elegibilidade

O cliente só pode avaliar quando todas as condições abaixo são verdadeiras:

| Condição                                                             | Erro se falhar                 |
| -------------------------------------------------------------------- | ------------------------------ |
| Pedido pertence ao cliente e está pago (`PAID`)                      | `trip_review.not_eligible`     |
| Ainda não existe avaliação para `tripId + orderId`                   | `trip_review.already_reviewed` |
| Há um ticket `VALID` do Order para a Trip com `boardedAt` preenchido | `trip_review.not_eligible`     |
| A Trip avaliada está `COMPLETED`                                     | `trip_review.not_eligible`     |

<Info>
  Ao buscar um pedido pelo app, a resposta indica se a avaliação está disponível e quais alvos devem aparecer (`includeCompany`, `includeDriver`).
</Info>

## Alvos da avaliação

```mermaid theme={null}
flowchart LR
    TR[TripReview] --> D[Driver<br/>rating + comment]
    TR --> CO[Company<br/>rating + comment]
```

* **Motorista** e **empresa** são derivados da Trip avaliada (`driverId`, `companyId`).
* Cada nota (`rating`) é um inteiro de **1 a 5**. Comentários são opcionais.
* A avaliação é sobre a experiência da Trip.

## Fluxo

```mermaid theme={null}
flowchart TD
    C["Cliente envia avaliação"] --> ORDER["Pedido é validado"]
    ORDER --> UNIQUE["TripReview anterior é checada"]
    UNIQUE --> BOARD["Ticket da Trip embarcado é validado"]
    BOARD --> TRIP["Trip precisa estar COMPLETED"]
    TRIP --> SAVE["Avaliação é registrada"]
```

<Note>
  Ao registrar a avaliação, o pedido retorna com o `review` anexado.
</Note>

## Contato a partir da avaliação

O passageiro pode iniciar atendimento a partir da avaliação usando o botão de contato da revisão.

Esse fluxo não cria resposta dentro da review. A avaliação continua sendo o registro da experiência, e a conversa operacional fica em [SupportCase](/data-modelling/support/support-case).

Quando o contato nasce da avaliação, o chamado deve referenciar:

* `relatedTripReviewId`: avaliação que originou o contato.
* `relatedOrderId`: pedido que deu elegibilidade para a review.
