> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devmob.app.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Visão geral do domínio de operações: pontos, rotas, viagens, programações, itinerários, disponibilidade de assentos e eventos.

O domínio de Operations é o **núcleo operacional** do DEVMOB. Ele gerencia toda a lógica de transporte, desde a definição de rotas fixas até o controle de ocupação de assentos durante uma viagem.

## Entidades

<CardGroup cols={2}>
  <Card title="Points" icon="location-dot" href="/domain/operations/points">
    Catálogo global de localidades reutilizáveis com nome, descrição e coordenadas opcionais. Padroniza filtros de busca entre empresas.
  </Card>

  <Card title="Routes" icon="route" href="/domain/operations/routes">
    Pares fixos de origem-destino definidos por empresa, com aprovação antes de uso operacional.
  </Card>

  <Card title="Trips" icon="bus-simple" href="/domain/operations/trips">
    Viagem agendada = rota + veículo + motorista. Ciclo de vida, disponibilidade e último GPS conhecido.
  </Card>

  <Card title="Trip Review" icon="star" href="/domain/operations/trip-reviews">
    Avaliação da viagem pelo cliente: motorista e empresa.
  </Card>

  <Card title="Trip Schedules" icon="calendar-days" href="/domain/operations/trip-schedules">
    Programações recorrentes que materializam viagens vendáveis em um horizonte móvel de 90 dias.
  </Card>

  <Card title="Itineraries" icon="map-location-dot" href="/domain/operations/trip-itineraries">
    Trechos compráveis dentro de uma viagem, referenciando pares de paradas (TripStops) com preços independentes.
  </Card>

  <Card title="Seat Availability" icon="couch" href="/domain/operations/seat-availability">
    Ocupação por segmento via TripSeatSegment; disponibilidade = capacidade do veículo − assentos vendidos.
  </Card>

  <Card title="Trip Events" icon="bell" href="/domain/operations/trip-events">
    Eventos operacionais: atrasos, trocas de motorista/veículo, embarque e incidentes.
  </Card>

  <Card title="Routing" icon="diagram-project" href="/domain/operations/routing">
    Preview de rota (polyline, distância, duração) sobre Points.
  </Card>

  <Card title="Places" icon="map-pin" href="/domain/operations/places">
    Busca externa que alimenta a criação de Points com nome e coordenadas.
  </Card>
</CardGroup>

## Fluxo Geral

```mermaid theme={null}
flowchart TD
    PL[Place<br/>Google Places] -.->|alimenta cadastro| P[Point<br/>catálogo global]
    P -->|originId / destinationId| R[Route]
    P -.->|coordenadas| RT[Routing preview]
    R -->|template recorrente| SC[TripSchedule]
    SC -->|materializa 90d| T[Trip]
    R -->|criação avulsa| T
    V[Vehicle] -->|assigned to| T
    D[Driver] -->|assigned to| T
    T -->|has stops| TS[TripStop]
    TS -->|pairs form| I[TripItinerary]
    T -->|sells seat as| TSS[TripSeatSegment]
    T -->|records| TE[TripEvent]
    T -->|tracks latest GPS| GPS[Trip tracking]
    T -->|reviewed as| TR[TripReview]
    I -->|sold as| TK[Ticket<br/>Sales]
```

## Conceitos-Chave

* **Point** é o catálogo global de localidades — compartilhado entre todas as empresas para padronizar nomes, coordenadas e o filtro de busca no app do passageiro. Coordenadas são opcionais.
* **Place** é a busca externa usada para descobrir e geocodificar um local antes de criar um Point.
* **Route** é fixa — define um par origem-destino (referenciando Points) reutilizável em múltiplas viagens. Ela nasce em `PENDING_APPROVAL` e precisa ser aprovada para virar `ACTIVE`.
* **Routing** calcula o preview de uma rota (polyline/distância/duração) sobre uma sequência de Points. Trechos com Points sem coordenadas viram `GAP`.
* **Trip** é uma instância de viagem agendada, com data/hora, veículo, motorista e último ponto GPS aceito enquanto estiver em andamento.
* **TripReview** registra a avaliação de uma Trip comprada dentro de um Order.
* **TripSchedule** é o template recorrente que materializa viagens futuras em lote.
* **TripStop** define as paradas físicas da viagem referenciando Points do catálogo global, com horários por viagem.
* **TripItinerary** referencia pares de TripStops como trechos compráveis com preços independentes.
* **TripSeatSegment** garante que um assento não seja vendido duas vezes para o mesmo trecho.
* **TripEvent** registra ocorrências operacionais durante a viagem, escopadas a uma parada ou globais.

<Info>
  O domínio de Operations não processa vendas diretamente — ele disponibiliza itinerários e assentos que serão comercializados pelo domínio de Sales.
</Info>
