Um Point representa uma localidade do catálogo global do DEVMOB — um terminal, cidade, ponto de embarque ou local de referência identificado por nome, coordenadas e uma descrição opcional. Pontos são compartilhados entre todas as empresas para padronizar filtros e buscas no app do passageiro.
Campos
| Campo | Tipo | Descrição |
|---|
pointId | UUID | Identificador único |
name | string | Nome do local |
description | string? | Descrição complementar (opcional) |
lat | decimal? | Latitude (opcional, entre -90 e 90) |
lng | decimal? | Longitude (opcional, entre -180 e 180) |
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 de última atualização |
deletedBy | UUID? | Usuário que removeu o registro, quando aplicável |
deletedAt | datetime? | Data de remoção |
Regras de Negócio
- O catálogo de Points é global — não pertence a nenhuma Organization, Cooperative ou Company.
- Pontos são gerenciados pelo BackOffice e consumidos por todas as empresas como referência única.
- O nome é único (case-insensitive) — criar ou renomear um Point para um nome já usado retorna conflito.
- Uma Route referencia exatamente dois Points: um como origem (
originId) e outro como destino (destinationId).
- O mesmo Point pode ser reutilizado em quantas rotas forem necessárias — esse é o ganho central do catálogo.
- As coordenadas (
lat/lng) são opcionais. Um Point sem coordenadas é válido como parada e pode ser enviado ao route preview, mas qualquer par consecutivo que envolva Point sem coordenadas vira um segmento GAP com reason: MISSING_COORDINATES.
Origem das coordenadas (Place lookup)
As coordenadas de um Point normalmente vêm de um Place. O fluxo de cadastro no BackOffice usa autocomplete para encontrar o local e resolver { name, description, lat, lng }, que alimenta a criação do Point.
Cada Route aponta para dois Points (origem e destino). Um único Point como “São Paulo” pode ser origem de N rotas e destino de M rotas — sem duplicação de nome ou coordenadas.
Pontos formam a base do filtro padronizado de busca no app do passageiro: como o catálogo é global, o usuário consegue filtrar viagens por origem/destino de forma consistente entre todas as empresas operadoras.