K • KHALID INSPECTION PRO
Acesso restrito • Login e senha
A autenticação real é feita pelo provedor de identidade. Não coloque senhas no código do aplicativo.
K
KHALID INSPECTION PRO
Khalid: presença, controle e resultado.

Painel do plantão

Visitas realizadas
0
Meta da noite
7–8
Pendentes
21
Ocorrências abertas
0

Módulos do sistema

🚔 Plantão & Viatura
Check-in, GPS, evidências e diário.
🏢 Inspeções
Postos, checklist e histórico.
⚠️ Ocorrências
Status e acompanhamento.
🎓 Treinamentos
Tema, participantes e evidências.

Prioridades

📍 Pontos operacionais
Base Assecom — Rua Evaristo Emiliano Bueno, 22 — Ponte Rasa
Posto Gabriela — Rua Jujiu, 501 — Penha
📊 Resumo geral
Carregando...
Inicie um plantão para calcular as prioridades.

🚔 Abrir plantão

📍 Check-in inicial do plantão

Registre a saída operacional antes de iniciar a ronda.

Localização ainda não registrada
Nenhuma evidência anexada.

Roteiro

🏢 Postos

🚗 Nova visita

Checklist

00:00

⚠️ Ocorrências

🎓 Treinamentos

🚔 Diário da Viatura

📊 Relatórios

💾 Backup local

Exporte seus registros para guardar uma cópia ou transferir para outro aparelho. A importação restaura os dados neste aplicativo.

🖨️ Impressão

Visitas
0
Ocorrências
0
Treinamentos
0
Check-ins
0

Relatório operacional

`); w.document.close(); } selectCircuit('A'); `); w.document.close();w.focus();setTimeout(()=>w.print(),300); } async function exportBackup(){ const payload={version:3,exportedAt:new Date().toISOString(),checkins:await dbAll('checkins'),visits:await dbAll('visits'),occs:await dbAll('occs'),trainings:await dbAll('trainings'),carlogs:await dbAll('carlogs')}; const clean=JSON.stringify(payload); const a=document.createElement('a');a.href=URL.createObjectURL(new Blob([clean],{type:'application/json'}));a.download='khalid-inspection-pro-backup.json';a.click();URL.revokeObjectURL(a.href); } async function restoreBackup(event){ const f=event.target.files[0];if(!f)return; try{ const data=JSON.parse(await f.text()); const tx=db.transaction(['visits','occs'],'readwrite');tx.objectStore('visits').clear();tx.objectStore('occs').clear(); tx.oncomplete=async()=>{for(const v of (data.visits||[])){delete v.id;await dbAdd('visits',v)}for(const o of (data.occs||[])){delete o.id;await dbAdd('occs',o)}visits=await dbAll('visits');occs=await dbAll('occs');save();alert('Backup restaurado com sucesso.');}; }catch(e){alert('Não foi possível restaurar este backup.');} } function update(){document.getElementById('kpiDone').textContent=visits.length;document.getElementById('kpiPending').textContent=Math.max(0,all.length-visits.length);document.getElementById('kpiOpen').textContent=occs.filter(o=>o.status!=='Fechada').length; const sc=document.getElementById('summaryCounts');if(sc)sc.textContent=`Check-ins: ${checkins.length} • Visitas: ${visits.length} • Ocorrências: ${occs.length} • Treinamentos: ${trainings.length} • Diário da viatura: ${carlogs.length}`;document.getElementById('today').textContent=new Date().toLocaleString('pt-BR');document.getElementById('priorities').innerHTML=all.map(p=>({p,n:visits.filter(v=>v.post===p[0]).length})).sort((a,b)=>a.n-b.n).slice(0,5).map(x=>`
${x.p[0]} — ${x.n} visita(s) registrada(s)
`).join('')} document.getElementById('today').textContent=new Date().toLocaleString('pt-BR');fillSelects();setCheckinDateTime();fillAllSelects();update();loadData();