API v1

Checklist Veicular

Android: ChecklistFragment · ChecklistFragmentNew · ChecklistItemFragment

Inspeção pré e pós-viagem para conformidade com regulamentações brasileiras de transporte. Diferente do Checklist Sistemico (equipamentos IoT), opera sobre itens físicos inspecionados manualmente pelo motorista ou inspetor.

Distinção: O Checklist Veicular (/ui/checklist/) é independente do Checklist Sistemico (/ui/sistemic/). Ambos usam o endpoint /v1/checklists mas com modelos de dados e fluxos distintos. O veicular usa company_id como filtro; o sistemico usa origin=sistemic.

Fluxo de Navegação

1

NavChecklistFragment — seleção de modo

Tela inicial do módulo. Apresenta opções para listar checklists existentes ou agendar um novo.

2

ChecklistFragment — lista de checklists

Lista todos os checklists da empresa com busca por placa. Exibe skeleton loading enquanto carrega. Permite cancelar checklist com diálogo de confirmação.

3

ChecklistItemFragment — detalhes do checklist

Exibe os itens de um checklist específico com resultado por item. Abre como popup/bottom sheet via FragmentPopUpChecklist.

Permissões

CódigoAção protegida
158Visualizar histórico de checklists (PERMISSION_HIST_CHECKLIST)
156Cadastrar / agendar novo checklist (PERMISSION_CAD_CHECKLIST)
141Acesso ao módulo Checklist na Home (controla visibilidade do botão)
// Leitura em SharedPreferences "DATA", chave "perms_user"
val permissionsJson = dataPrefs.getString("perms_user", "[]") ?: "[]"
hasPermHist = permissionsJson.contains("158")
hasPermCad  = permissionsJson.contains("156")

Busca e Filtro

O ChecklistFragment inclui um SearchView que filtra a lista pelo campo placa do veículo em tempo real (onQueryTextChange). A busca é case-insensitive e opera sobre a lista carregada em memória, sem nova chamada à API.

Cancelamento de Checklist

O adapter exibe um botão de cancelar por item. Ao clicar, um AlertDialog de confirmação é exibido antes de chamar checklistViewModel.cancelChecklist(id). Após sucesso o fragment recarrega via getChecklist(companyId) com delay de 1 segundo para aguardar propagação no backend.

Estados / Loading

O ChecklistAdapter aceita o parâmetro isLoading: Boolean. Quando true, exibe skeleton placeholders no lugar dos itens reais. O estado é desativado quando o ViewModel emite dados ou noData = true.

Endpoints

GET /v1/checklists?_start_from={unix_epoch}
Lista checklists da empresa. O parâmetro _start_from deve ser Unix epoch Int64 (segundos). Campos name_applicant e name_doer já vêm no payload — não é necessário enriquecimento separado.
Bug histórico iOS: _start_from era enviado como ISO 8601 → HTTP 400. Correção: Int64(date.timeIntervalSince1970).
POST /v1/checklists/schedule
Agendamento de novo checklist. Validação de parity PHP aplicada no backend — campos obrigatórios precisam seguir o contrato exato definido nos structs Go.
POST /v1/checklists/{id}/cancel
Cancela um checklist pelo ID. Chamado após confirmação do usuário via AlertDialog.

SharedPreferences relevantes (Android)

NomeChaveUso
selected_companycompany_idFiltro principal da lista de checklists
DATAperms_userJSON array de permissões (158, 156, 141)
jwt_tokensjwt_tokenBearer JWT enviado no header Authorization

Versões do Fragment (New vs Legacy)

ClasseViewModelAPIStatus
ChecklistFragmentChecklistViewModelLegado (api.monisat.online)Mantido para compatibilidade
ChecklistFragmentNewChecklistViewModelNewv1 (api.monisystem.com)Versão ativa
O sufixo New indica migração para API v1. A versão legada permanece no código mas não é a rota padrão no nav graph.