-- Migration 021 — Suivi PageSpeed Insights mensuel
--
-- Stocke un run par site/stratégie/date :
--   - scores Performance / Accessibility / Best Practices / SEO (0-100)
--   - Core Web Vitals : LCP (ms), CLS, INP (ms), FCP (ms), TTFB (ms)
--   - lien direct vers le rapport en ligne
--
-- Une ligne par exécution (jamais d'écrasement). Pour l'historique.
-- Purge auto à 24 mois via cron/purge.php.

CREATE TABLE IF NOT EXISTS site_pagespeed_runs (
    id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    site_id INT UNSIGNED NOT NULL,
    strategy VARCHAR(10) NOT NULL COMMENT 'mobile | desktop',
    checked_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

    -- Scores Lighthouse (0-100, NULL si non disponible)
    score_performance TINYINT UNSIGNED NULL,
    score_accessibility TINYINT UNSIGNED NULL,
    score_best_practices TINYINT UNSIGNED NULL,
    score_seo TINYINT UNSIGNED NULL,

    -- Core Web Vitals
    lcp_ms INT UNSIGNED NULL COMMENT 'Largest Contentful Paint (ms)',
    cls DECIMAL(5,3) NULL COMMENT 'Cumulative Layout Shift',
    inp_ms INT UNSIGNED NULL COMMENT 'Interaction to Next Paint (ms)',
    fcp_ms INT UNSIGNED NULL COMMENT 'First Contentful Paint (ms)',
    ttfb_ms INT UNSIGNED NULL COMMENT 'Time to First Byte (ms)',
    si_ms INT UNSIGNED NULL COMMENT 'Speed Index (ms)',
    tbt_ms INT UNSIGNED NULL COMMENT 'Total Blocking Time (ms)',

    -- Résultat
    success TINYINT(1) NOT NULL DEFAULT 0,
    error_message VARCHAR(500) NULL COMMENT 'Si success=0',
    report_url VARCHAR(500) NULL COMMENT 'Lien vers le rapport en ligne sur pagespeed.web.dev',

    KEY idx_site_strategy_checked (site_id, strategy, checked_at),
    KEY idx_checked (checked_at),
    CONSTRAINT fk_pagespeed_site FOREIGN KEY (site_id) REFERENCES sites(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Réglages globaux PageSpeed (cf platform_settings table)
INSERT INTO platform_settings (setting_key, setting_value, description) VALUES
    ('pagespeed_enabled', '1', 'Activer le suivi PageSpeed Insights mensuel (1/0)'),
    ('pagespeed_strategies', 'mobile,desktop', 'Stratégies à mesurer (mobile / desktop / mobile,desktop)'),
    ('pagespeed_sites_per_run', '1', 'Nombre de sites à traiter par run cron (étalement mensuel)'),
    ('pagespeed_retention_months', '24', 'Conservation des runs (mois)')
ON DUPLICATE KEY UPDATE setting_key = setting_key;
