<?php
/*
 * update_satellite.php - БЭКЕНД:
 * 1. Получает актуальные TLE для Noor 1, 2, 3 (через Space-Track.org API).
 * 2. Выполняет расчет AAL (Временно со случайной динамикой).
 * 3. Записывает результат в satellite_cache.json.
 */
error_reporting(0);
date_default_timezone_set('UTC');

$cache_file = __DIR__ . '/satellite_cache.json';
$history_limit = 30; // Лимит истории для графика

// ----------------------------------------------------------------------
// 📡 ШАГ 1: ПОЛУЧЕНИЕ АКТУАЛЬНЫХ TLE ДЛЯ САТЕЛЛИТОВ NOOR
// ----------------------------------------------------------------------

// ⚠️ ВАЖНО: Убедитесь, что 'cookie.txt' содержит действующую сессию Space-Track.org!
$url = 'https://www.space-track.org/basicspacedata/query/class/gp/NORAD_CAT_ID/45529,51633,57657/orderby/EPOCH desc/format/tle';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, __DIR__.'/cookie.txt');
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$all_tle = curl_exec($ch);
curl_close($ch);

// Теперь переменная $all_tle содержит актуальные TLE-данные в строковом формате.
// Пример: "NOOR 1\n1 45529U 20027A   25308.57140924 ..."

if (empty($all_tle)) {
    // Логика обработки ошибки получения TLE
    $tle_status = 'Ошибка получения TLE. Проверьте cookie.txt или API.';
    // Можно обновить AAL, используя старые данные
    $current_aal = 1.0; 
} else {
    $tle_status = 'TLE успешно получены (' . count(explode("\n", trim($all_tle))) . ' строк).';
    
    // --- ДАЛЬШЕ НУЖНА ЛОГИКА РАСЧЕТА ПРОХОДОВ ---
    // Здесь должен быть код, который использует $all_tle для расчета:
    // 1. Времени следующего прохода над Израилем/целевыми базами.
    // 2. Расчета AAL (F1: Активность) на основе частоты этих проходов.
    
    // ВРЕМЕННЫЙ КОД ДЛЯ ИМИТАЦИИ ДИНАМИКИ (до реализации расчета)
    $new_data_raw = get_real_time_data();
    $aal_result = calculate_aal($new_data_raw);
    $current_aal = round($aal_result['aal'] + (mt_rand(-5, 5) / 100), 2); 
    $current_aal = max(1.0, min(5.0, $current_aal)); 
    $factors_contribution = $aal_result['contribution'];
}


// --- ФУНКЦИИ РАСЧЕТА (Используются для имитации) ---
function get_real_time_data() {
    $f1_value = mt_rand(10, 50) / 100;
    $f2_value = mt_rand(5, 35) / 100;
    $f3_value = 0.2 + (mt_rand(0, 10) / 100);
    $f4_value = 0.15;
    return ['f1' => $f1_value, 'f2' => $f2_value, 'f3' => $f3_value, 'f4' => $f4_value];
}

function calculate_aal($data) {
    $weights = ['f1' => 0.4, 'f2' => 0.3, 'f3' => 0.2, 'f4' => 0.1];
    $base_aal = 1.0;
    $total_aal = $base_aal;
    $contribution = [];
    
    $total_aal += $data['f1'] * $weights['f1'];
    $contribution['F1: Активность Ирана'] = ['contribution' => $data['f1'] * $weights['f1'], 'weight' => $weights['f1'], 'details' => "Значение " . number_format($data['f1'], 2)];

    $total_aal += $data['f2'] * $weights['f2'];
    $contribution['F2: Кибер/Помехи'] = ['contribution' => $data['f2'] * $weights['f2'], 'weight' => $weights['f2'], 'details' => "Значение " . number_format($data['f2'], 2)];

    $total_aal += $data['f3'] * $weights['f3'];
    $contribution['F3: Потенциал Врага'] = ['contribution' => $data['f3'] * $weights['f3'], 'weight' => $weights['f3'], 'details' => "Значение " . number_format($data['f3'], 2)];

    $total_aal += $data['f4'] * $weights['f4'];
    $contribution['F4: Разрыв Поколений'] = ['contribution' => $data['f4'] * $weights['f4'], 'weight' => $weights['f4'], 'details' => "Значение " . number_format($data['f4'], 2)];
    
    return ['aal' => $total_aal, 'contribution' => $contribution];
}
// ----------------------------------------------------------------------


// Определение статуса и цвета AAL (на основе $current_aal)
if ($current_aal >= 3.5) {
    $status_text = 'Критическая (DEFCON 2-1)';
    $status_color = '#dc2626';
} elseif ($current_aal >= 2.5) {
    $status_text = 'Высокая (DEFCON 3)';
    $status_color = '#ef4444';
} elseif ($current_aal >= 1.5) {
    $status_text = 'Средняя (DEFCON 4)';
    $status_color = '#f97316';
} else {
    $status_text = 'Низкая (DEFCON 5)';
    $status_color = '#10b981';
}

// Загрузка истории
$trend_history = [];
if (file_exists($cache_file)) {
    $old_data = json_decode(@file_get_contents($cache_file), true);
    if (isset($old_data['trend_history']) && is_array($old_data['trend_history'])) {
        $trend_history = $old_data['trend_history'];
    }
}

// Добавление текущего результата в историю
$trend_history[] = [
    'timestamp' => date('d.m.Y H:i') . ' UTC',
    'aal' => $current_aal
];

// Обрезка истории
if (count($trend_history) > $history_limit) {
    $trend_history = array_slice($trend_history, count($trend_history) - $history_limit);
}

// ----------------------------------------------------------------------
// 🚨 АКТУАЛЬНЫЕ ПРИМЕРЫ (для демонстрации)
// ----------------------------------------------------------------------

$anomalies_data = [
    ['time' => date('d.m.Y H:i', strtotime('-15 minutes')) . ' UTC', 'frequency' => 'Optical', 'satellite' => 'Noor 3 (57657)', 'target' => 'Предстоящий проход над ядерным центром Димона.', 'confidence' => 'Высокая (A)'],
    ['time' => date('d.m.Y H:i', strtotime('-4 hours')) . ' UTC', 'frequency' => 'SAR', 'satellite' => 'Sentinel-1 (EU)', 'target' => 'Подозрительная активность судов у побережья Ливана.', 'confidence' => 'Средняя (B)'],
    ['time' => date('d.m.Y H:i', strtotime('-2 days')) . ' UTC', 'frequency' => 'IR/OSINT Feed', 'satellite' => 'Early W. Sat', 'target' => 'Запуск БР (Иран, Семнан). Проверяется TLE.', 'confidence' => 'Высокая (A)'],
];

$activities_data = [
    ['type' => 'Разведка', 'satellite' => 'Noor 3', 'target' => 'Хайфа', 'last_pass' => date('d.m.Y H:i', strtotime('-30 minutes')) . ' UTC', 'status' => 'Активно', 'frequency' => 'Optical', 'resolution' => '3m', 'source' => $tle_status],
];

// --- ФОРМИРОВАНИЕ ФИНАЛЬНОГО МАССИВА ---
$final_data = [
    'last_update' => date('d.m.Y H:i') . ' UTC',
    'aal' => $current_aal,
    'aal_text' => $status_text,
    'aal_color' => $status_color,
    'factors_contribution' => $factors_contribution,
    'trend_history' => $trend_history,
    'activities' => $activities_data,
    'analysis' => [
        'anomalies' => $anomalies_data,
        'images' => [], 
        'israel_impact' => 'Актуальные TLE-данные для иранских спутников Noor получены. Ожидается анализ проходов.', 
        'forecast' => 'Прогноз AAL зависит от результатов анализа полученных TLE.', 
        'weather_impact_israel' => 'Ясное небо. Оптическая разведка не затруднена.'
    ],
];

// Запись в файл кэша
@file_put_contents($cache_file, json_encode($final_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));

?>