API v1

Paridade Android / iOS

Toda feature no Android deve existir no iOS com comportamento idêntico.

Fluxo

1

Android primeiro

Implementar em Kotlin, testar e validar.

2

iOS espelha

ViewController replica comportamento do Fragment.

Equivalências de Classes

Android (Kotlin)iOS (Swift)
Fragment + ViewModelUIViewController + ViewModel
LiveData<T>@Published / Combine
Coroutines async/awaitSwift async/await
RecyclerView + AdapterUITableView + DataSource
SharedPreferencesUserDefaults / Keychain
OkHttpURLSession
Navigation ComponentUINavigationController
TabHelpersMétodos auxiliares no ViewController
BiometricPromptLAContext

Paridade de Features Recentes

FeatureAndroidiOSObservações
Painel de Controle Remoto / ConfigEngine (kill-switch de telas/botões via Firebase Remote Config) Catálogo assets/app_config.json + motor RuntimeConfig (wiring realtime genérico de botões) Chama flag por flag por ViewController (RemoteConfigService.shared) Paridade ALTA em capacidade. Ambos expõem isScreenEnabled/isFlagEnabled/screenMaintenanceMessage; fail-safe (ausente/true = ligado).
Comprovação de entregas por canhoto (lista + detalhe + upload + câmera in-app com overlay/conferência + remover/substituir canhoto) 3 pontos de entrada, incluindo botão "Entregas Pendentes" na Home Sem botão "Entregas Pendentes" na Home (só por viagem) Paridade ALTA. NF descontinuada; sem "código único" — comprovação só por foto. Divergência: pontos de entrada na Home.
Pontos autorizados e áreas de risco no mapa (motorista, gestor, grid) Toggle do motorista via preferência local Toggle do motorista protegido por flag remota (driver_trip_toggleStopPoints_enabled) Paridade ALTA. Mesmo endpoint GET /v1/trip/{tripId}/rotogram e mesmo contrato. Base ainda em STAGING (nginx) nas duas plataformas.
Cadastro de viagem migrado para v1 Previsão de chegada via POST /v1/trip/arrival_forecast Previsão de chegada via POST /v1/journey/arrival_forecast Paridade ALTA. Ambos usam POST /v1/trip/ (singular) com duplo submit accept_nonconformity (false = análise, true = confirma) e gating GET /v1/trip/registration_permissions. Divergência menor a confirmar: endpoint da previsão de chegada.