SELECT 'alertas_huerfanas_caso', COUNT(*)
FROM gene_temporal_alertas a
LEFT JOIN gene_casos c ON c.id=a.id_caso AND c.id_empresa=a.id_empresa
WHERE c.id IS NULL;

SELECT 'alertas_evento_a_cruzado', COUNT(*)
FROM gene_temporal_alertas a
JOIN gene_eventos e ON e.id=a.id_evento_a
WHERE a.id_evento_a IS NOT NULL AND (e.id_empresa<>a.id_empresa OR e.id_caso<>a.id_caso);

SELECT 'alertas_evento_b_cruzado', COUNT(*)
FROM gene_temporal_alertas a
JOIN gene_eventos e ON e.id=a.id_evento_b
WHERE a.id_evento_b IS NOT NULL AND (e.id_empresa<>a.id_empresa OR e.id_caso<>a.id_caso);

SELECT 'alertas_persona_cruzada', COUNT(*)
FROM gene_temporal_alertas a
JOIN gene_personas p ON p.id=a.id_persona
WHERE a.id_persona IS NOT NULL AND (p.id_empresa<>a.id_empresa OR p.id_caso<>a.id_caso);

SELECT 'alertas_fingerprint_invalido', COUNT(*)
FROM gene_temporal_alertas
WHERE fingerprint NOT REGEXP '^[0-9a-f]{64}$';

SELECT 'alertas_revisadas_sin_usuario', COUNT(*)
FROM gene_temporal_alertas
WHERE estado IN ('revisada','descartada') AND (revisada_por IS NULL OR revisada_en IS NULL);

SELECT 'alertas_abiertas_con_revision', COUNT(*)
FROM gene_temporal_alertas
WHERE estado='abierta' AND revisada_en IS NOT NULL;

SELECT 'rangos_eventos_invertidos', COUNT(*)
FROM gene_eventos
WHERE (fecha_desde IS NOT NULL AND fecha_hasta IS NOT NULL AND fecha_hasta<fecha_desde)
   OR (ano_desde IS NOT NULL AND ano_hasta IS NOT NULL AND ano_hasta<ano_desde);
