API v1

Manager — iOS

ManagerViewController · TripManager1 · ElasticsearchService · ModelsManager Equivalente Android: TripManagerFragment

Visão do gestor: viagens em andamento por apólice, semáforo de eventos e detalhes operacionais.

Arquivos

manager/
├── ManagerViewController.swift     · entrada principal
├── ManagerViewController1.swift    · versão v1
├── ManagerTripManager1.swift       · controlador de viagens
├── TripManager1.swift              · model de viagem (agregado)
├── VehicleManager.swift            · combo veículo
├── MapManage.swift · RouteManage.swift · sub-componentes (mapa/rota)
├── DeliveryCardView2.swift         · card de entrega
├── OccurrencesCardView.swift       · card de ocorrências
├── ElasticsearchService.swift      · busca em índice ES
├── FuncService.swift               · serviços auxiliares
└── ModelsManager.swift             · Codables

Pontos autorizados e áreas de risco

No detalhe da viagem, o ManagerViewController1 desenha sobre o mapa (MapKit) os pontos autorizados e as áreas de risco da viagem — mesma feature das telas de Motorista e detalhe do Grid, e paridade com o Android.

PeçaResponsabilidade
ManagerViewController1.fetchStopPoints()Dispara a busca e classifica cada ponto.
fetchStopPointItems(jwt:)Chama GET /v1/trip/{idTrip}/rotogram e junta points + apolice_rules.risk_points + deliveries.
MapManage.makeRiskAreaPolygon(from:)Constrói o MKPolygon vermelho a partir de location.coordinates (anel externo + buracos).
MapManage.createRiskAreaRenderer(for:)MKPolygonRenderer das áreas de risco.
StopPointAnnotationAnotação dos pontos; pino azul com caixa para type_return == "delivery".

Itens com type/type_return == "risk_area" viram polígono (acumulados em riskAreaPolygonsById); os demais viram anotações classificadas por type_return (client/authorized/delivery), acumuladas em stopPointAnnotationsById.

Endpoint em STAGING: GET /v1/trip/{tripId}/rotogram ainda aponta para http://nginx.surubim.monisat.online/v1. Pendente troca para produção https://api.monisystem.com/v1. Contrato e renderização detalhados na página Mapa (iOS).
Paridade Android/iOS: mesma agregação e classificação (Android ManagerViewModelNew.fetchStopPoints + redrawTripMarkers). Na tela do gestor os pontos são exibidos sempre (sem toggle) nas duas plataformas — o toggle protegido por flag remota existe apenas na tela do motorista iOS.

Endpoints

GET/v1/trip/{tripId}/rotogram
Pontos autorizados + áreas de risco + entregas (data[] { points, apolice_rules.risk_points, deliveries }). Base em STAGING (http://nginx.surubim.monisat.online/v1).
GET/v1/policy
Apólices ativas da empresa — popula o seletor superior.
GET/v1/trip
Viagens filtradas por apólice + status.
GET/v1/trackers
Posição corrente para o mini-mapa.