API v1

Grid — iOS

GridViewController · GridViewControllerV1 · GridHelpers · GridModels Equivalente Android: GridFragment

Lista filtrável de viagens. Versão V1 consome /v1/grid_data; versão legada mantida para fallback.

Arquivos

grid/
├── GridViewController.swift       · versão legacy
├── GridViewControllerV1.swift     · versão v1
├── GridHelpers.swift              · status → cor, formatação
├── GridModels.swift               · Codable das linhas
├── FilterPopupViewController.swift · filtros (status, motorista, datas)
├── cell/                          · UITableViewCell customizadas
└── details/                       · drill-down de uma viagem

Filtros

FiltroComportamento
StatusMapeado via GridHelpers (cor + label).
Motorista / VeículoCombo abre FilterPopupViewController.
DatasRange picker, aplicado client-side e via query string.
PlacaBusca via PlateMatcher — trata formato antigo ↔ Mercosul como equivalente (ex.: MSM2020MSM2A20). Ver Histórico.

Detalhe da Viagem — Pontos autorizados e áreas de risco

No drill-down (details/), o DetailGridViewController renderiza sobre o mapa (MapKit) os pontos autorizados e as áreas de risco da viagem — mesma feature das telas de Motorista e Gestor, e paridade com o Android.

ElementoComo é desenhado
Áreas de riscoMKPolygon vermelho acumulado em riskAreaPolygonsById (itens type_return == "risk_area").
Pontos autorizadosStopPointAnnotation em stopPointAnnotationsById; pino azul com caixa para type_return == "delivery".
Endpoint em STAGING: GET /v1/trip/{tripId}/rotogramdata[] { points, apolice_rules.risk_points, deliveries }. Base stopPointsBase = http://nginx.surubim.monisat.online/v1; pendente troca para produção https://api.monisystem.com/v1. Contrato completo em Mapa (iOS).

Endpoints

GET/v1/grid_data
Linhas do grid com paginação e filtros. Resposta deve ser desempacotada do wrapper data.
GET/v1/trip
Detalhes ao abrir uma linha.
GET/v1/trip/{tripId}/rotogram
Detalhe da viagem: pontos autorizados + áreas de risco + entregas. Base em STAGING (http://nginx.surubim.monisat.online/v1).