Pular para o conteúdo principal

Mapeamento de Banco de Dados — trips

Pilar: 04 — Banco de Dados / Tabelas
Status: 🟢 Implementado
Última Revisão Técnica: 2026-08-03
Módulos Conectados: gatein-server (app/models.py, app/api/public/trips.py, app/api/mobile/activities.py), gatein-app (src/screens/Activity)


1. Visão Geral da Modelagem de Viagens (trips)

A tabela trips no PostgreSQL armazena a entidade física de Viagem de Frete atribuída por uma Empresa Transportadora (trucking_company_id) a um motorista (driver_id). A viagem engloba o trecho logístico completo entre um ponto de origem e um ponto de destino, contendo dados de geolocalização estruturados, dados customizados de carga e prazos operacionais.


2. Atributos Físicos da Tabela trips

ColunaTipo SQLConstraintsDescrição / Regra de Negócio
idUUIDPRIMARY KEY, Default gen_random_uuid()Identificador único interno no banco de dados
trucking_company_idUUIDFOREIGN KEY (companies.id), NOT NULL, INDEXEmpresa transportadora detentora da viagem (Tenant Guard)
driver_idUUIDFOREIGN KEY (drivers.id), NOT NULL, INDEXMotorista escalado para a viagem
refVARCHAR(64)NOT NULL, INDEXReferência única externa do frete/manifesto (ex: MANIFESTO-2026-8812)
layout_refVARCHAR(64)NULLABLEReferência do layout dinâmico JSON de renderização no app
license_plateVARCHAR(10)NULLABLEPlaca do veículo associado (Cavalo/Carreta)
statusVARCHAR(32)NOT NULL, Default 'PLANNED', INDEXEstado atual da viagem (ver Máquina de Estados)
summaryTEXTNULLABLEDescrição resumida ou observações sobre a viagem
window_startTIMESTAMPTZNULLABLEData/hora prevista de início da viagem
window_endTIMESTAMPTZNULLABLEData/hora prevista de término da viagem
start_toleranceINTEGERNOT NULL, Default 0Tolerância de início em minutos
end_toleranceINTEGERNOT NULL, Default 0Tolerância de término em minutos
custom_dataJSONBNULLABLEChave-valor arbitrária para preenchimento de campos customizados do layout
from_locationVARCHAR(255)NULLABLEDescrição amigável do local de partida (ex: "Terminal Retroportuário A")
to_locationVARCHAR(255)NULLABLEDescrição amigável do local de chegada (ex: "Armazém Geral B")
origin_streetVARCHAR(255)NULLABLELogradouro de origem
origin_numberVARCHAR(32)NULLABLENúmero do endereço de origem
origin_cityVARCHAR(128)NULLABLECidade de origem
origin_stateVARCHAR(64)NULLABLEEstado (UF) de origem
origin_countryVARCHAR(64)NULLABLEPaís de origem
origin_zipVARCHAR(32)NULLABLECEP de origem
origin_latDOUBLE PRECISIONNULLABLELatitude exata do ponto de origem
origin_lngDOUBLE PRECISIONNULLABLELongitude exata do ponto de origem
destiny_streetVARCHAR(255)NULLABLELogradouro de destino
destiny_numberVARCHAR(32)NULLABLENúmero do endereço de destino
destiny_cityVARCHAR(128)NULLABLECidade de destino
destiny_stateVARCHAR(64)NULLABLEEstado (UF) de destino
destiny_countryVARCHAR(64)NULLABLEPaís de destino
destiny_zipVARCHAR(32)NULLABLECEP de destino
destiny_latDOUBLE PRECISIONNULLABLELatitude exata do ponto de destino
destiny_lngDOUBLE PRECISIONNULLABLELongitude exata do ponto de destino
created_atTIMESTAMPTZNOT NULL, Default now()Timestamp de criação
updated_atTIMESTAMPTZNOT NULL, Default now()Timestamp da última modificação

3. Máquina de Estados de Viagem

Estado (status)Descrição OperacionalTransições Permitidas
PLANNEDViagem criada e agendada no sistema, aguardando horário-> ACTIVE, CANCELLED, DELETED
ACTIVEViagem liberada para o motorista no aplicativo mobile-> IN_PROGRESS, PAUSED, CANCELLED
IN_PROGRESSMotorista iniciou o deslocamento/frete no aplicativo-> PAUSED, COMPLETED, CANCELLED
PAUSEDViagem interrompida temporariamente por descanso ou parada-> IN_PROGRESS, CANCELLED
COMPLETEDViagem concluída e entregue no destinoEstado Final (Imutável)
CANCELLEDViagem cancelada pela transportadoraEstado Final (Imutável)
DELETEDSoft-delete lógico (ocultado de todas as APIs)Estado Final (Imutável)

4. Índices e Regras de Performance

  • idx_trips_company_ref: Unique Index composto (trucking_company_id, ref) impedindo duplicidade de código de referência por transportadora.
  • idx_trips_driver_status: Índice composto (driver_id, status) otimizado para a rota GET /mobile/activities do aplicativo.
  • idx_trips_window_start: Índice em window_start para acelerar varreduras de relatórios de frete.

5. Diagrama de Entidades Relacionadas (ER)

erDiagram
COMPANIES ||--o{ TRIPS : "contrata/transporta"
DRIVERS ||--o{ TRIPS : "executa"
TRIPS ||--o{ TRIP_LOGS : "gera histórico"
TRIP_LAYOUTS ||--o{ TRIPS : "formata card"

TRIPS {
uuid id PK
uuid trucking_company_id FK
uuid driver_id FK
string ref "Único por Empresa"
string layout_ref
string status
double origin_lat
double origin_lng
double destiny_lat
double destiny_lng
jsonb custom_data
}