TripReview representa a avaliação de uma Trip comprada dentro de um 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
- Relaciona-se com Order
- Relaciona-se indiretamente com Checkout via
Order.checkoutId - Relaciona-se com Driver
- Relaciona-se com Company
- Pode originar SupportCase, quando o passageiro usa o botão de contato na revisão
Regras de Negócio
- Registro único por viagem dentro do pedido:
tripId + orderIddeve 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.
checkoutIdnão deve ser duplicado nesta entidade; ele é derivado pororderId -> 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 ticketVALIDda 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 com
relatedTripReviewId.