<?php
// init-database.php - создание таблицы в базе данных
header('Content-Type: text/html; charset=utf-8');

$config = require __DIR__ . '/config.php';

try {
    $pdo = new PDO(
        "mysql:host={$config['db_host']};dbname={$config['db_name']};charset=utf8mb4",
        $config['db_user'],
        $config['db_pass'],
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
    );
    
    echo "<h3>🗃️ Инициализация базы данных</h3>";
    
    // Создаем таблицу readings
    $sql = "
    CREATE TABLE IF NOT EXISTS readings (
        id INT AUTO_INCREMENT PRIMARY KEY,
        timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
        
        -- Сырые данные
        pizza_raw DECIMAL(5,2),
        oil_raw DECIMAL(10,2),
        media_raw INT,
        navy_raw INT,
        vip_raw INT,
        gov_raw INT,
        gold_raw DECIMAL(10,2),
        cyber_raw INT,
        energy_raw DECIMAL(5,2),
        social_raw DECIMAL(5,2),
        
        -- Оценки (0-10)
        pizza_score DECIMAL(3,1),
        oil_score DECIMAL(3,1),
        media_score DECIMAL(3,1),
        navy_score DECIMAL(3,1),
        vip_score DECIMAL(3,1),
        gov_score DECIMAL(3,1),
        gold_score DECIMAL(3,1),
        cyber_score DECIMAL(3,1),
        energy_score DECIMAL(3,1),
        social_score DECIMAL(3,1),
        
        -- Основные показатели
        security_index DECIMAL(3,1),
        aal_level INT,
        
        -- Дополнительные временные метрики
        time_to_aa3 DECIMAL(4,1),
        signal_detection_time INT,
        detection_to_action_time INT,
        
        -- Ручная корректировка
        is_manual BOOLEAN DEFAULT FALSE,
        manual_reason TEXT,
        updated_at DATETIME,
        
        INDEX idx_timestamp (timestamp),
        INDEX idx_security_index (security_index)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    ";
    
    $pdo->exec($sql);
    echo "✅ Таблица 'readings' создана успешно!<br>";
    
    // Добавляем тестовые данные
    echo "Добавление тестовых данных... ";
    $test_stmt = $pdo->prepare("
        INSERT INTO readings (
            pizza_raw, oil_raw, media_raw, navy_raw, vip_raw, gov_raw, 
            gold_raw, cyber_raw, energy_raw, social_raw,
            pizza_score, oil_score, media_score, navy_score, vip_score, 
            gov_score, gold_score, cyber_score, energy_score, social_score,
            security_index, aal_level, time_to_aa3, signal_detection_time, detection_to_action_time
        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    ");
    
    $test_data = [
        2.5, 75.5, 1200, 3, 8, 2,      // raw values
        45.5, 2, 60.0, 2.5,            // raw values
        5.2, 4.1, 6.8, 5.0, 2.0,       // scores
        8.9, 3.3, 2.2, 4.4, 3.1,       // scores
        4.7, 3,                         // index and AAL
        3.8, 42, 18                     // time metrics
    ];
    
    $test_stmt->execute($test_data);
    echo "✅ Тестовые данные добавлены!<br>";
    
    // Проверяем
    $count = $pdo->query("SELECT COUNT(*) as cnt FROM readings")->fetch()['cnt'];
    echo "✅ Записей в базе: $count<br>";
    
    echo "<h3 style='color: green;'>🎉 База данных готова к работе!</h3>";
    echo "<p><a href='./'>Перейти на сайт</a> | <a href='admin/'>Админка</a></p>";
    
} catch (Exception $e) {
    echo "<h3 style='color: red;'>❌ Ошибка: " . $e->getMessage() . "</h3>";
    
    if (strpos($e->getMessage(), '1045') !== false) {
        echo "<p>🔍 Проблема: Неправильный пользователь/пароль базы данных</p>";
    } elseif (strpos($e->getMessage(), '1049') !== false) {
        echo "<p>🔍 Проблема: База данных не существует. Создайте её сначала.</p>";
    }
}
?>