Histórico — iOS
Histórico de inspeções veiculares por apólice. Filtros por data, status e empresa. Desde junho/2026, com análise consolidada, Ver Situação, Troca de Reboque e Retificação — paridade total com o Android.
SituationViewController roda POST /v1/checklist/fluxogram/analyze (com paginação paralela) e exibe cards premium. Espelha o HistoricFragment + HistoricStatusViewModelNew do Android.
Arquivos
historic/ ├── HistoricViewController.swift · histórico clássico de viagens ├── SituationViewController.swift · empresa/apólice → analyze → cards ├── SituationViewModel.swift (SituationModels)· analyze / reanálise / rectify / busca reboque ├── SituationModels.swift · SitVehicleItem, SitTotals, SitDetail… ├── SituationVehicleCell.swift · card premium do veículo ├── SituationDetailViewController.swift · "Ver Situação" ├── SituationRectifyDialogViewController.swift· diálogo de retificação └── SituationTrailerDialogViewController.swift· diálogo de troca de reboque
Análise Consolidada (SituationViewModel)
O SituationViewModel roda POST /v1/checklist/fluxogram/analyze, que devolve TODOS os veículos da apólice já classificados. Como o backend pagina, o ViewModel busca as páginas em paralelo e consolida itens + totais (SitTotals). Os dados do analyze são guardados para permitir a reanálise/retificação de um único veículo depois.
Ver Situação
O SituationDetailViewController (args em SitDetailArgs) carrega o detalhe via loadDetail() → GET /v1/checklist/{id}?_policy={policy}. Mescla os resultados de checklist/termo/retificação em SitDetail / SitDetailItem, mantendo por item o registro mais recente — mesma regra do SituationDetailViewModelNew do Android.
Troca de Reboque
O SituationTrailerDialogViewController permite alterar os reboques considerados e reexecutar a situação:
- Busca por placa:
searchTrailers(plate:)→GET /v1/vehicles?_type=R&_plate=...(apenas reboques). - Aceita placa antiga ↔ Mercosul via
PlateMatcher.matches(_:query:)(emchecklist/modals/PlateModal.swift). - Reexecução: novo
POST /v1/checklist/fluxogram/analyzesingle-vehicle com ostrailersescolhidos.
Retificação
Habilitada apenas com a permissão 405 (UserDefaults.standard.array(forKey: "user_perms").contains("405") + flag rectification do analyze). O SituationRectifyDialogViewController chama rectify(checklistId:…):
/v1/checklist/{id}/rectifyfiles opcionais (base64, SitRectifyFile).
200 com a retificação aplicada mas falhar no upload de documentos. Esses casos vêm em upload_warnings[].name e são exibidos ao usuário (notificação onRectifyWarning) — nunca engolidos num toast rápido.
Endpoints
/v1/companiesfantasia / _id)./v1/policy/v1/checklist/fluxogram/analyze/v1/checklist/{id}?_policy={policy}/v1/checklist/{id}/rectifyupload_warnings em falha parcial./v1/vehicles?_type=R&_plate=...