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.
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.
- Relaciona-se com Trip, quando a atividade ocorre em uma viagem.
- Relaciona-se com Driver, quando a atividade é feita pelo app do motorista.
- Relaciona-se com 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.boardedAtcontinua sendo o estado consolidado do embarque.TicketActivitymantém o histórico operacional que explica como o estado do ticket foi atingido.metadatadeve 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 |