Passenger representa a pessoa que viaja em uma passagem. Ele não é necessariamente o comprador (Customer) nem precisa ter conta (User) no DEVMOB.
Esse modelo permite cenários como uma pessoa comprando passagens para familiares, funcionários ou terceiros. O comprador continua sendo o Customer do Order; o viajante de cada passagem fica em Passenger.
Campos
| Campo | Tipo | Descrição |
|---|---|---|
passengerId | UUID | Identificador único |
name | String | Nome do passageiro |
document | String | Documento do passageiro |
documentType | DocumentType | Tipo do documento |
birthDate | Date? | Data de nascimento |
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 |
deletedBy | UUID? | Usuário que removeu o registro, quando aplicável |
deletedAt | DateTime? | Data de remoção lógica |
Relacionamentos
- Relaciona-se com múltiplos Ticket
Regras de Negócio
Passengeridentifica o viajante de uma passagem, não o comprador do pedido.- Um
Customerpode comprar tickets para si ou para outros passageiros. - O par
document+documentTypeé único. - Durante a criação de um pedido, o passageiro é resolvido por
document+documentType. - Se já existir passageiro com o mesmo documento e tipo, o registro é reutilizado e
name/birthDatepodem ser atualizados com os dados mais recentes enviados no pedido. - O
Ticketmantém umsnapshot.passengerdenormalizado para preservar os dados exibidos no momento da emissão. - Atualizações posteriores no
Passengernão devem alterar o snapshot de tickets já emitidos.
Enums
DocumentType
| Valor | Descrição |
|---|---|
CPF | Cadastro de Pessoa Física |
CNPJ | Cadastro Nacional da Pessoa Jurídica |
RG | Registro Geral |