Campos
| Campo | Tipo | Descrição |
|---|---|---|
tripScheduleId | UUID | Identificador único |
companyId | UUID | Referência à empresa |
routeId | UUID | Referência à rota |
vehicleId | UUID | Referência ao veículo |
driverId | UUID | Referência ao motorista |
name | String | Nome da programação |
frequency | TripScheduleFrequency | Frequência de geração |
interval | Int | Intervalo entre ocorrências (default 1) |
status | TripScheduleStatus | Estado de ativação (default ACTIVE) |
departureAt | DateTime | Primeira partida programada |
endAt | DateTime? | Fim opcional da recorrência |
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 |
Relacionamentos
- Relaciona-se com Company
- Relaciona-se com Route
- Relaciona-se com Vehicle
- Relaciona-se com Driver
- Relaciona-se com múltiplos TripScheduleStop
- Relaciona-se com múltiplos TripScheduleItinerary
Regras de Negócio
- Template recorrente que materializa
Tripfuturas vendáveis em um horizonte móvel de 90 dias (ver Trip Schedules). - A materialização é idempotente: a chave
companyId + departureAt + routeId + vehicleId + driverIdevita duplicar a mesma viagem. - Uma rotina diária re-materializa as programações
ACTIVE, estendendo a cobertura conforme o tempo avança. - Apenas o
nameé editável; o estado muda via operações dedicadas (pause/resume/delete).
Enums
TripScheduleFrequency
| Valor | Descrição |
|---|---|
DAILY | A cada interval dias |
WEEKLY | A cada interval semanas |
MONTHLY | A cada interval meses; se o dia não existir no mês de destino, a ocorrência é pulada |
TripScheduleStatus
| Valor | Descrição |
|---|---|
ACTIVE | Materializa viagens e participa da rotina diária de materialização |
PAUSED | Fica fora da rotina diária de materialização |
ARCHIVED | Soft-delete final |