-- ========================================
-- VERIFICAÇÃO RÁPIDA DE CHECKLISTS COM IDS INCORRETOS
-- Execute este script no seu client MySQL
-- ========================================

-- 1. CHECKLISTS COM VIAGEM_ID INEXISTENTE
SELECT 'CHECKLISTS COM PROBLEMAS:' as status;
SELECT 
    c.id as checklist_id,
    c.viagem_id as viagem_id_incorreto,
    c.veiculo_id,
    c.data_hora,
    c.sincronizado,
    'Viagem não existe' as problema
FROM checklist_veiculo c
LEFT JOIN viagens v ON c.viagem_id = v.id
WHERE v.id IS NULL
ORDER BY c.data_hora DESC;

-- 2. ESTATÍSTICAS GERAIS
SELECT 'ESTATÍSTICAS GERAIS:' as status;
SELECT 
    COUNT(*) as total_checklists,
    COUNT(DISTINCT c.viagem_id) as viagens_distintas,
    COUNT(DISTINCT c.veiculo_id) as veiculos_distintos,
    SUM(CASE WHEN v.id IS NULL THEN 1 ELSE 0 END) as checklists_com_problema,
    SUM(CASE WHEN v.id IS NOT NULL THEN 1 ELSE 0 END) as checklists_corretos
FROM checklist_veiculo c
LEFT JOIN viagens v ON c.viagem_id = v.id;

-- 3. POSSÍVEIS CORREÇÕES (TOP 10)
SELECT 'POSSÍVEIS CORREÇÕES:' as status;
SELECT 
    c.id as checklist_id,
    c.viagem_id as viagem_id_incorreto,
    c.veiculo_id,
    c.data_hora as data_checklist,
    v_correta.id as viagem_id_correto,
    v_correta.data_inicio as data_viagem,
    v_correta.cliente,
    v_correta.motivo,
    DATEDIFF(DATE(c.data_hora), DATE(v_correta.data_inicio)) as diferenca_dias
FROM checklist_veiculo c
LEFT JOIN viagens v_incorreta ON c.viagem_id = v_incorreta.id
JOIN viagens v_correta ON (
    v_correta.veiculo_id = c.veiculo_id 
    AND DATE(v_correta.data_inicio) = DATE(c.data_hora)
)
WHERE v_incorreta.id IS NULL
ORDER BY c.data_hora DESC
LIMIT 10;

-- 4. CHECKLISTS RECENTES (ÚLTIMOS 7 DIAS)
SELECT 'CHECKLISTS RECENTES:' as status;
SELECT 
    c.id,
    c.viagem_id,
    c.veiculo_id,
    c.data_hora,
    v.id as viagem_existe,
    v.cliente,
    CASE 
        WHEN v.id IS NULL THEN '❌ PROBLEMA'
        ELSE '✅ OK'
    END as status_verificacao
FROM checklist_veiculo c
LEFT JOIN viagens v ON c.viagem_id = v.id
WHERE c.data_hora >= DATE_SUB(NOW(), INTERVAL 7 DAY)
ORDER BY c.data_hora DESC;

-- 5. CORREÇÃO AUTOMÁTICA (DESCOMENTE PARA EXECUTAR)
/*
-- ATENÇÃO: Execute apenas após verificar os dados acima!
UPDATE checklist_veiculo c
JOIN viagens v ON (
    v.veiculo_id = c.veiculo_id 
    AND DATE(v.data_inicio) = DATE(c.data_hora)
)
LEFT JOIN viagens v_incorreta ON c.viagem_id = v_incorreta.id
SET c.viagem_id = v.id
WHERE v_incorreta.id IS NULL;
*/

-- 6. VERIFICAÇÃO FINAL
SELECT 'VERIFICAÇÃO FINAL:' as status;
SELECT 
    COUNT(*) as checklists_com_problema
FROM checklist_veiculo c
LEFT JOIN viagens v ON c.viagem_id = v.id
WHERE v.id IS NULL;

-- 7. LOG DE AUDITORIA (se você quiser criar um log)
-- CREATE TABLE IF NOT EXISTS auditoria_checklist (
--     id INT AUTO_INCREMENT PRIMARY KEY,
--     checklist_id INT,
--     viagem_id_antigo INT,
--     viagem_id_novo INT,
--     data_correcao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
--     usuario VARCHAR(100) DEFAULT 'sistema'
-- ); 