Skip to main content

Overview

O setup de um veículo permite manter o veículo e o catálogo completo de assentos em uma única operação. SeatType e Seat são gerenciados dentro do contexto do veículo.

Conteúdo hierárquico

SeatType carrega name, color e price. Cada categoria carrega o array de Seat que pertence a ela — assim o cliente não precisa referenciar IDs internos entre categoria e assento: Exemplo de conteúdo:
A licensePlate é normalizada em maiúscula, sem espaços e sem hífen. Unicidade é global. seatTypes é opcional no cadastro/atualização; quando um Seat omite status, o padrão é AVAILABLE.

Cadastro

O Vehicle pertence à cooperativa. Quando um permissionário pode usar o veículo, essa autorização fica em VehicleTransportOperator.

Atualização por substituição

A atualização é substituição completa quando o operador envia seatTypes. O catálogo anterior deixa de ser usado em novas vendas e o novo catálogo passa a valer. Se seatTypes for omitido do conteúdo, o catálogo permanece intacto e apenas os campos do veículo são atualizados.
A substituição remove o catálogo anterior das listagens e vendas futuras, preservando histórico de tickets já emitidos.

Vehicle Status Lifecycle

O status muda por ações próprias de ativação, desativação e remoção:

SeatType Suggestions

As sugestões ajudam o cliente a oferecer opções no formulário de cadastro. A lista combina:
  1. Categorias já cadastradas pela organização.
  2. Um catálogo padrão (Comum, Executivo, Leito) para nomes ainda não usados na organização.
A deduplicação é por name em lowercase, com categorias da organização tendo precedência sobre o catálogo padrão.

Multi-tenancy

Toda consulta e mutação é limitada à cooperativa autenticada. Veículos de outras cooperativas não são expostos.

Capacidades OPS

Business Rules

A escolha por substituição total no update simplifica o cliente: ele envia o catálogo final desejado, sem precisar calcular diferenças entre versões.