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

# TicketActivity

> Histórico de tentativas de uso, validações e reimpressões de uma passagem

`TicketActivity` registra eventos operacionais ligados a uma passagem. Ele preserva tentativas de validação, reimpressões, embarques e falhas sem sobrecarregar o estado principal do [Ticket](/data-modelling/sales/ticket).

## Campos

| Campo              | Tipo                   | Descrição                                                             |
| ------------------ | ---------------------- | --------------------------------------------------------------------- |
| `ticketActivityId` | `UUID`                 | Identificador único                                                   |
| `ticketId`         | `UUID`                 | Passagem relacionada                                                  |
| `tripId`           | `UUID?`                | Viagem relacionada, quando a atividade acontece no embarque           |
| `driverId`         | `UUID?`                | Motorista que executou a atividade, quando aplicável                  |
| `userId`           | `UUID?`                | Usuário que executou a atividade                                      |
| `type`             | `TicketActivityType`   | Tipo de atividade registrada                                          |
| `result`           | `TicketActivityResult` | Resultado da atividade                                                |
| `reason`           | `String?`              | Motivo técnico ou operacional quando a atividade falha ou é rejeitada |
| `metadata`         | `Json?`                | Dados específicos da atividade                                        |
| `occurredAt`       | `DateTime`             | Data em que a atividade ocorreu                                       |
| `createdBy`        | `UUID?`                | Usuário que criou o registro, quando aplicável                        |
| `createdAt`        | `DateTime`             | Data de criação                                                       |

## Relacionamentos

* Relaciona-se com [Ticket](/data-modelling/sales/ticket).
* Relaciona-se com [Trip](/data-modelling/operations/trip), quando a atividade ocorre em uma viagem.
* Relaciona-se com [Driver](/data-modelling/fleet/driver), quando a atividade é feita pelo app do motorista.
* Relaciona-se com [User](/data-modelling/identity/user), quando existe usuário responsável pela ação.

## Regras de Negócio

* O registro é append-only.
* Validação de QR Code, tentativa duplicada, tentativa inválida, embarque e reimpressão devem criar uma atividade.
* `Ticket.boardedAt` continua sendo o estado consolidado do embarque.
* `TicketActivity` mantém o histórico operacional que explica como o estado do ticket foi atingido.
* `metadata` deve ser usado para dados variáveis, como payload lido, origem do scan, dispositivo, stop ou motivo detalhado.

## Enums

### TicketActivityType

| Valor                   | Descrição                               |
| ----------------------- | --------------------------------------- |
| `QR_VALIDATION_ATTEMPT` | Tentativa de validação do QR Code       |
| `BOARDING_RECORDED`     | Embarque registrado                     |
| `REPRINT`               | Reimpressão ou reemissão de comprovante |

### TicketActivityResult

| Valor      | Descrição                                        |
| ---------- | ------------------------------------------------ |
| `SUCCESS`  | Atividade concluída com sucesso                  |
| `FAILED`   | Atividade falhou por erro técnico ou operacional |
| `REJECTED` | Atividade rejeitada por regra de negócio         |

## Example

```json theme={null}
{
  "ticketActivityId": "01980b70-5b2f-7d50-8c7f-9b5f2e4f7c21",
  "ticketId": "0197a813-a9a6-7752-8173-d40a2a2d0ef0",
  "tripId": "0197a80f-2d8f-7710-b243-b67fb477a1c0",
  "driverId": "0197a807-1ec7-75e8-8ff8-df64dd070046",
  "userId": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "type": "QR_VALIDATION_ATTEMPT",
  "result": "SUCCESS",
  "reason": null,
  "metadata": {
    "source": "DRIVER_APP",
    "payloadHash": "sha256:3f0d...",
    "stopOrder": 0
  },
  "occurredAt": "2026-07-04T08:05:00.000Z",
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-04T08:05:00.000Z"
}
```
