-- ================================================================
-- TABELA PARA ALERTAS DE SEGURANÇA E DETECÇÃO DE FRAUDES
-- ================================================================

CREATE TABLE IF NOT EXISTS drophub_global.alertas_seguranca (
    id INT AUTO_INCREMENT PRIMARY KEY,
    tipo ENUM('cancelamento_fraude', 'reembolso_fraude', 'acesso_suspeito', 'outro') NOT NULL DEFAULT 'cancelamento_fraude',
    saleId VARCHAR(255) NULL COMMENT 'ID da venda relacionada',
    motivo TEXT NULL COMMENT 'Motivo informado pelo usuário',
    palavra_detectada VARCHAR(100) NULL COMMENT 'Palavra suspeita que acionou o alerta',
    ip_info TEXT NULL COMMENT 'JSON com informações completas do IP',
    data_hora DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    whitelabel VARCHAR(100) NULL,
    usuario_id INT NULL,
    resolvido TINYINT(1) DEFAULT 0 COMMENT '0=Pendente, 1=Resolvido',
    observacoes TEXT NULL COMMENT 'Observações da análise',
    analisado_por VARCHAR(255) NULL,
    data_analise DATETIME NULL,
    INDEX idx_tipo (tipo),
    INDEX idx_saleId (saleId),
    INDEX idx_data_hora (data_hora),
    INDEX idx_whitelabel (whitelabel),
    INDEX idx_resolvido (resolvido)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
COMMENT='Registro de alertas de segurança e tentativas de fraude';

-- ================================================================
-- VIEW PARA CONSULTA RÁPIDA DE ALERTAS PENDENTES
-- ================================================================

CREATE OR REPLACE VIEW drophub_global.v_alertas_pendentes AS
SELECT 
    a.id,
    a.tipo,
    a.saleId,
    a.motivo,
    a.palavra_detectada,
    a.data_hora,
    a.whitelabel,
    JSON_EXTRACT(a.ip_info, '$.ip') as ip,
    JSON_EXTRACT(a.ip_info, '$.localidade') as localidade,
    JSON_EXTRACT(a.ip_info, '$.provedor_internet') as provedor,
    mv.order_id,
    mv.vlr_total,
    u.email as usuario_email,
    u.nome as usuario_nome
FROM drophub_global.alertas_seguranca a
LEFT JOIN drophub_global.minhas_vendas mv ON a.saleId = mv.saleId
LEFT JOIN usuarios u ON mv.usuario_id = u.id
WHERE a.resolvido = 0
ORDER BY a.data_hora DESC;

-- ================================================================
-- CONSULTAS ÚTEIS
-- ================================================================

-- Ver todos os alertas pendentes
-- SELECT * FROM drophub_global.v_alertas_pendentes;

-- Ver alertas por palavra suspeita
-- SELECT palavra_detectada, COUNT(*) as total 
-- FROM drophub_global.alertas_seguranca 
-- GROUP BY palavra_detectada 
-- ORDER BY total DESC;

-- Marcar alerta como resolvido
-- UPDATE drophub_global.alertas_seguranca 
-- SET resolvido = 1, 
--     observacoes = 'Análise concluída - situação normalizada',
--     analisado_por = 'admin@example.com',
--     data_analise = NOW()
-- WHERE id = 1;
