-- =============================================================================
-- Table classifications - Dashboard Bot Detector
-- =============================================================================
-- Stocke les classifications des IPs pour l'apprentissage supervisé
-- 
-- Usage:
--   clickhouse-client --host test-sdv-anubis.sdv.fr --port 8123 \
--     --user default --password <votre_mot_de_passe> < deploy_classifications_table.sql
--
-- =============================================================================

USE mabase_prod;

-- =============================================================================
-- Table pour stocker les classifications des IPs
-- =============================================================================

CREATE TABLE IF NOT EXISTS mabase_prod.classifications
(
    -- Identification
    ip                String,
    
    -- Classification
    label             LowCardinality(String),  -- "legitimate", "suspicious", "malicious"
    tags              Array(String),           -- Tags associés
    comment           String,                  -- Commentaire de l'analyste
    
    -- Métriques pour ML
    confidence        Float32,                 -- Confiance de la classification (0-1)
    features          String,                  -- JSON avec toutes les features
    
    -- Métadonnées
    analyst           String,                  -- Nom de l'analyste
    created_at        DateTime DEFAULT now()   -- Date de classification
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(created_at)
ORDER BY (created_at, ip)
SETTINGS index_granularity = 8192;

-- =============================================================================
-- Index pour accélérer les recherches par IP
-- =============================================================================

CREATE INDEX IF NOT EXISTS idx_classifications_ip
ON TABLE mabase_prod.classifications (ip) TYPE minmax GRANULARITY 1;

-- =============================================================================
-- Vue pour les statistiques de classification
-- =============================================================================

CREATE VIEW IF NOT EXISTS mabase_prod.view_classifications_stats AS
SELECT
    label,
    count() AS total,
    uniq(ip) AS unique_ips,
    avg(confidence) AS avg_confidence,
    min(created_at) AS first_classification,
    max(created_at) AS last_classification
FROM mabase_prod.classifications
GROUP BY label;

-- =============================================================================
-- FIN
-- =============================================================================
-- 
-- Vérifier que la table est créée :
-- SELECT count() FROM mabase_prod.classifications;
--
-- Voir les statistiques :
-- SELECT * FROM mabase_prod.view_classifications_stats;
--
-- =============================================================================
