<?php
// update_navy.php — ПОЛНАЯ ИНТЕГРАЦИЯ С NAVY.PHP
// Путь: /home/giftfqdj/com.giftstip.com/factors/update_navy.php
// Запуск: вручную или через cron

// === ОТЛАДКА ===
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// === ПУТИ К ФАЙЛАМ ===
$cache_file = __DIR__ . '/navy_data.json';     // КЭШ ДАННЫХ
$log_file   = __DIR__ . '/update_navy.log';    // ЛОГ

// === ПРОВЕРКА ПРАВ НА ЗАПИСЬ ===
if (!is_writable(__DIR__)) {
    die("ОШИБКА: Нет прав на запись в " . __DIR__);
}

// === ФУНКЦИЯ ЛОГИРОВАНИЯ ===
function log_msg($msg) {
    global $log_file;
    $time = date('Y-m-d H:i:s');
    $entry = "[$time] $msg\n";
    @file_put_contents($log_file, $entry, FILE_APPEND | LOCK_EX);
    echo "<pre>LOG: $msg</pre>";
}

// === СТАРТ ===
log_msg("=== СТАРТ update_navy.php ===");

// === БЕЗОПАСНЫЙ ЗАПРОС ===
function safe_fetch($url, $timeout = 15) {
    $ch = curl_init();
    if (!$ch) return false;
    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => $timeout,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_USERAGENT => 'Avatiah/1.0 (+https://com.giftstip.com)'
    ]);
    $result = curl_exec($ch);
    $error = curl_error($ch);
    curl_close($ch);
    if ($error) {
        log_msg("CURL ОШИБКА: $error");
        return false;
    }
    return $result;
}

// === РЕЗЕРВНЫЕ ДАННЫЕ (из navy.php) ===
$fallback_data = [
    'last_update' => date('d.m.Y H:i'),
    'aal' => 1.5,
    'aal_text' => 'Минимальный риск',
    'aal_color' => '#10b981',
    'analysis' => [
        'csg_count' => 0,
        'ddg_count' => 3,
        'ssgn_count' => 0,
        'iran_ships' => 7,
        'russia_ships' => 5,
        'suez_traffic_loss' => '-60%',
        'economic_risk' => '$1 млрд/день'
    ],
    'reliability' => ['confirmed' => 3, 'probable' => 0, 'unknown' => 1],
    'chart_data' => [1.0, 1.1, 1.2, 1.1, 1.2, 1.3, 1.2, 1.2, 1.3, 1.5],
    'ships' => [
        // CVN
        [
            'type' => 'CVN', 'name' => 'USS Gerald R. Ford (CVN-78)', 'class' => 'Ford-class',
            'homeport' => 'Norfolk, VA', 'commissioned' => '2017', 'displacement' => '100,000 т',
            'crew' => '4500', 'speed' => '30+ узлов', 'length' => '333 м', 'width' => '78 м',
            'range' => 'Неограниченная (ядерный реактор)', 'aircraft' => '75+',
            'airwing' => 'CVW-8 (F-35C, F/A-18E/F, EA-18G, E-2D, MH-60R/S)',
            'weapons' => 'RIM-162 ESSM, RIM-116 RAM, Phalanx CIWS, Mk 38 25mm',
            'role' => 'Авианосная ударная группа, воздушное превосходство, удары по Ирану/Хезболле, сдерживание',
            'israel_impact' => 'Высокий: без CSG — уязвимость к Houthi-блокаде Суэца и иранским дронам',
            'status' => 'База Norfolk — погрузка авиагруппы', 'lat' => 36.94, 'lng' => -76.31,
            'zone' => 'US', 'reliability' => 'confirmed', 'source' => 'USNI Fleet Tracker', 'last_ping' => '27.10.2025'
        ],
        // DDG
        [
            'type' => 'DDG', 'name' => 'USS Carney (DDG-64)', 'class' => 'Arleigh Burke Flight I',
            'homeport' => 'Mayport, FL', 'commissioned' => '1996', 'displacement' => '9,200 т',
            'crew' => '300', 'speed' => '30+ узлов', 'length' => '155 м', 'width' => '20 м', 'draft' => '9.4 м',
            'range' => '4,400 миль (20 узлов)', 'weapons' => '96 VLS (SM-2/6, Tomahawk, ASROC), 2× Mk 45 5", 2× Phalanx CIWS, 6× торпед Mk 46/54',
            'role' => 'ПВО, ПРО, эскорт судов, перехват Houthi-ракет, защита Суэца',
            'israel_impact' => 'Ключевой: >20 перехватов Houthi, защита поставок нефти/оружия в Израиль',
            'status' => 'Красное море — ПВО, активные перехваты', 'lat' => 20.0, 'lng' => 38.0,
            'zone' => 'RedSea', 'reliability' => 'confirmed', 'source' => 'USNI + MarineTraffic AIS', 'last_ping' => '29.10.2025'
        ],
        [
            'type' => 'DDG', 'name' => 'USS Stockdale (DDG-106)', 'class' => 'Arleigh Burke Flight IIA',
            'homeport' => 'San Diego, CA', 'commissioned' => '2009', 'displacement' => '9,500 т',
            'crew' => '320', 'speed' => '30+ узлов', 'length' => '155 м', 'width' => '20 м', 'draft' => '9.4 м',
            'range' => '4,400 миль', 'weapons' => '96 VLS, Mk 45 5", 2× Phalanx, 6× торпед',
            'role' => 'Эскорт судов, ПВО, защита Баб-эль-Мандеб',
            'israel_impact' => 'Высокий: предотвращение блокады Суэца, защита логистики Израиля',
            'status' => 'Баб-эль-Мандеб — эскорт', 'lat' => 12.5, 'lng' => 43.5,
            'zone' => 'RedSea', 'reliability' => 'confirmed', 'source' => 'USNI', 'last_ping' => '28.10.2025'
        ],
        [
            'type' => 'DDG', 'name' => 'USS Thomas Hudner (DDG-116)', 'class' => 'Arleigh Burke Flight IIA',
            'homeport' => 'Mayport, FL', 'commissioned' => '2018', 'displacement' => '9,500 т',
            'crew' => '320', 'speed' => '30+ узлов', 'length' => '155 м', 'width' => '20 м', 'draft' => '9.4 м',
            'range' => '4,400 миль', 'weapons' => '96 VLS, Mk 45 5", 2× Phalanx',
            'role' => 'ПВО, переход в зону, поддержка эскорта',
            'israel_impact' => 'Средний: усиливает ПВО Суэца',
            'status' => 'Переход из Средиземного в Красное море', 'lat' => 33.0, 'lng' => 30.0,
            'zone' => 'EastMed', 'reliability' => 'confirmed', 'source' => 'USNI', 'last_ping' => '27.10.2025'
        ],
        // SSGN
        [
            'type' => 'SSGN', 'name' => 'USS Georgia (SSGN-729)', 'class' => 'Ohio-class',
            'homeport' => 'Kings Bay, GA', 'commissioned' => '1984 (SSGN 2007)', 'displacement' => '18,750 т',
            'crew' => '160', 'speed' => '25+ узлов', 'length' => '170 м', 'diameter' => '12.8 м', 'depth' => '>800 футов',
            'range' => 'Неограниченная (ядерный реактор)', 'weapons' => '154 Tomahawk, 4× торпед Mk 48, UUV, мины',
            'specops' => '66 SEALs, 2× Dry Deck Shelter, UUV для ISR/мин',
            'role' => 'Скрытные удары, доставка спецназа, разведка, постановка мин',
            'israel_impact' => 'Критический: удары по Ирану, диверсии, сдерживание — отсутствие = +0.3 к риску',
            'status' => 'Позиция неизвестна (засекречено)', 'lat' => 20.0, 'lng' => 38.0,
            'zone' => 'Unknown', 'reliability' => 'unknown', 'source' => 'USNI (2024)', 'last_ping' => '—'
        ]
    ]
];

// === ЗАГРУЗКА ПРЕДЫДУЩИХ ДАННЫХ ===
$previous = [];
if (file_exists($cache_file)) {
    $content = file_get_contents($cache_file);
    if ($content) {
        $decoded = json_decode($content, true);
        if (json_last_error() === JSON_ERROR_NONE) {
            $previous = $decoded;
        }
    }
}

// === ОБНОВЛЕНИЕ ГРАФИКА (10 дней) ===
$chart_history = $previous['chart_data'] ?? $fallback_data['chart_data'];
$chart_history[] = $previous['aal'] ?? 1.5;
$chart_history = array_slice($chart_history, -9);
$chart_history[] = 1.5; // Новое значение (можно пересчитать)
$fallback_data['chart_data'] = $chart_history;

// === RSS NAVALNEWS ===
log_msg("Парсинг RSS NavalNews...");
$feed = safe_fetch('https://www.navalnews.com/feed/');
if ($feed) {
    $xml = simplexml_load_string($feed);
    if ($xml && isset($xml->channel->item)) {
        foreach ($xml->channel->item as $item) {
            $title = (string)$item->title;
            if (stripos($title, 'US Navy') !== false && stripos($title, 'Red Sea') !== false) {
                $fallback_data['ships'][] = [
                    'type' => 'DDG', 'name' => $title, 'status' => 'Новое развертывание (RSS)',
                    'lat' => 20.0, 'lng' => 38.0, 'zone' => 'RedSea', 'reliability' => 'probable',
                    'source' => 'NavalNews RSS', 'last_ping' => date('d.m.Y')
                ];
            }
        }
    }
}

// === ДОВЕРИТЕЛЬНЫЙ ИНДЕКС ===
$confirmed = 0; $probable = 0; $unknown = 0;
foreach ($fallback_data['ships'] as $s) {
    if ($s['reliability'] === 'confirmed') $confirmed++;
    if ($s['reliability'] === 'probable') $probable++;
    if ($s['reliability'] === 'unknown') $unknown++;
}
$confidence = ($confirmed * 1.0 + $probable * 0.6 + $unknown * 0.3) / max(1, ($confirmed + $probable + $unknown));

// === АНАЛИТИЧЕСКИЕ ЗАВИСИМОСТИ ===
$aal = 1.0;
$csg = $fallback_data['analysis']['csg_count'];
$ssgn = $fallback_data['analysis']['ssgn_count'];
$ddg = $fallback_data['analysis']['ddg_count'];
$suez_loss = (float)str_replace(['%', '-'], '', $fallback_data['analysis']['suez_traffic_loss']);

$aal += $csg * 1.0;
$aal += $ssgn * 0.5;
if ($suez_loss > 50) $aal += 0.3;
if ($ddg > 5) $aal -= 0.2;
$aal = $aal * $confidence;
$aal = max(1.0, min(5.0, round($aal, 1)));

$fallback_data['aal'] = $aal;
$fallback_data['aal_text'] = $aal <= 1.5 ? 'Минимальный риск' : ($aal <= 2.5 ? 'Оперативная активность' : ($aal <= 3.5 ? 'Повышенное внимание' : ($aal <= 4.5 ? 'Угроза' : 'Критическая')));
$fallback_data['aal_color'] = $aal >= 4.5 ? '#dc2626' : ($aal >= 3.5 ? '#ef4444' : ($aal >= 2.5 ? '#f97316' : ($aal >= 1.5 ? '#f59e0b' : '#10b981')));
$fallback_data['last_update'] = date('d.m.Y H:i');
$fallback_data['reliability'] = ['confirmed' => $confirmed, 'probable' => $probable, 'unknown' => $unknown];

// === СОХРАНЕНИЕ ===
if (file_put_contents($cache_file, json_encode($fallback_data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT))) {
    log_msg("УСПЕХ: navy_data.json обновлён. AAL = $aal");
    echo "<h2 style='color:green;'>Обновление завершено. AAL: $aal</h2>";
} else {
    log_msg("ОШИБКА: Не удалось записать $cache_file");
    echo "<h2 style='color:red;'>Ошибка записи</h2>";
}
?>