#![deny(warnings)]
#![allow(dead_code)]
// [TSM.ID].[11031972] -- All Rights Reserved. Proprietary & Confidential.
use anyhow::{Result, anyhow};
use tracing::{info, error};

/// THE CASSANDRA MATRIX (Phase 61)
/// Absolute Global Fake News & Propaganda Annihilator
pub struct CassandraMatrix;

impl CassandraMatrix {
    /// 1. BOT SWARM AMPLIFICATION DETECTOR (Deteksi Viralisasi Palsu)
    /// Fakta yang alami butuh waktu berjam-jam untuk dibaca dan disebarkan manusia.
    /// Fake news / Propaganda sering kali ditembakkan oleh ribuan akun Bot secara serentak
    /// dalam hitungan detik untuk memanipulasi algoritma "Trending".
    /// Fungsi ini mengevaluasi kecepatan penyebaran sebuah tautan berita.
    pub fn detect_bot_amplification(jumlah_sebaran: u64, waktu_sebaran_detik: f64) -> Result<&'static str> {
        info!("CASSANDRA: Mengevaluasi Entropi Diseminasi (Kecepatan Penyebaran)...");
        
        // Menghitung rasio sebaran per detik (Velocity)
        let penyebaran_per_detik = (jumlah_sebaran as f64) / waktu_sebaran_detik;

        // Jika sebuah link di-share lebih dari 1000 kali dalam 1 detik, itu secara biologis tidak mungkin dilakukan manusia (Tanpa sistem komando otomatis)
        if penyebaran_per_detik > 1000.0 {
            error!("VONIS CASSANDRA: ARTIFICIAL VIRALITY (BOT SWARM PROPAGANDA) TERDETEKSI!");
            error!("Berita ini memiliki anomali sebaran {} share/detik. Disuntikkan secara paksa oleh pasukan Bot!", penyebaran_per_detik);
            return Err(anyhow!("PROPAGANDA_BOT_AMPLIFICATION"));
        }

        info!("VONIS CASSANDRA: Kecepatan penyebaran organik (Faktual). Tidak ada intervensi Bot Swarm.");
        Ok("ORGANIC_DISSEMINATION")
    }

    /// 2. SEMANTIC CONTRADICTION & EMOTIONAL VECTORING (Deteksi Hoax Logika & Clickbait)
    /// Berita palsu selalu mengandung dua kelemahan fatal: 
    /// a) Lubang logika fakta (Contradiction).
    /// b) Kosakata yang merekayasa kemarahan/ketakutan ekstrem agar diklik (Emotional Manipulation).
    pub fn analyze_narrative_integrity(teks_artikel: &str) -> Result<&'static str> {
        info!("CASSANDRA: Membedah Vektor Semantik dan Tingkat Manipulasi Emosi...");

        let kata_kata: Vec<&str> = teks_artikel.split_whitespace().collect();
        if kata_kata.is_empty() { return Ok("NO_DATA"); }

        // Kamus sederhana Vektor Emosi Negatif / Manipulatif (Fear-mongering & Clickbait)
        let red_flags = ["kiamat", "menghancurkan", "konspirasi", "terbongkar", "pasti", "kiamat", "kemarahan", "segera"];
        
        let mut emotional_score = 0;
        let mut logic_contradiction_score = 0;

        for kata in &kata_kata {
            let kata_lower = kata.to_lowercase();
            if red_flags.contains(&kata_lower.as_str()) {
                emotional_score += 1;
            }
            
            // Simulasi deteksi kontradiksi sebab-akibat (Misal, sebuah entitas yang secara fisik tidak mungkin berada di dua tempat)
            if kata_lower == "mustahil" || kata_lower == "terbukti_salah" {
                logic_contradiction_score += 1;
            }
        }

        // Penghitungan Rasio Emosi terhadap total kata (Jika lebih dari 20% kata adalah pemicu emosi ekstrem)
        let rasio_emosi = (emotional_score as f64) / (kata_kata.len() as f64);

        if rasio_emosi > 0.20 {
            error!("VONIS CASSANDRA: REKAYASA EMOSI EKSTREM (CLICKBAIT / FEAR-MONGERING) TERDETEKSI!");
            error!("Struktur bahasa sengaja didesain untuk mematikan rasionalitas pembaca.");
            return Err(anyhow!("EMOTIONAL_MANIPULATION_HOAX"));
        }

        if logic_contradiction_score > 2 {
            error!("VONIS CASSANDRA: KONTRADIKSI LOGIKA (FAKTA PALSU) TERDETEKSI!");
            error!("Klaim di dalam teks bertabrakan dengan hukum kausalitas/fakta terverifikasi.");
            return Err(anyhow!("SEMANTIC_CONTRADICTION_HOAX"));
        }

        info!("VONIS CASSANDRA: Struktur narasi stabil. Integritas fakta terkonfirmasi.");
        Ok("NARRATIVE_INTEGRITY_VERIFIED")
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_propaganda_annihilation() {
        // --- 1. UJI DETEKSI BOT SWARM (VIRALITAS PALSU) ---
        // Berita asli menyebar wajar (500 share dalam 60 detik)
        assert!(CassandraMatrix::detect_bot_amplification(500, 60.0).is_ok());
        
        // Propaganda Fake News disebar bot (5000 share dalam 0.5 detik)
        let hasil_bot = CassandraMatrix::detect_bot_amplification(5000, 0.5);
        assert!(hasil_bot.is_err());
        assert_eq!(hasil_bot.unwrap_err().to_string(), "PROPAGANDA_BOT_AMPLIFICATION");
        println!("CASSANDRA BERHASIL: Viralitas palsu (Bot Swarm) berhasil dideteksi dan dihancurkan!");

        // --- 2. UJI DETEKSI REKAYASA HOAX & CLICKBAIT ---
        // Artikel berita faktual
        let berita_asli = "Pemerintah secara resmi mengumumkan kebijakan ekonomi makro untuk tahun depan.";
        assert!(CassandraMatrix::analyze_narrative_integrity(berita_asli).is_ok());

        // Artikel Hoax / Clickbait (Penuh manipulasi emosi)
        let berita_hoax = "Kiamat segera tiba! Fakta konspirasi terbongkar dan pasti akan menghancurkan segalanya dengan kemarahan!";
        let hasil_hoax = CassandraMatrix::analyze_narrative_integrity(berita_hoax);
        assert!(hasil_hoax.is_err());
        assert_eq!(hasil_hoax.unwrap_err().to_string(), "EMOTIONAL_MANIPULATION_HOAX");
        println!("CASSANDRA BERHASIL: Artikel Fear-mongering / Fake News berhasil ditelanjangi!");
    }
}
