<?php
/* mfa.php – Активность МИД Израиля | Avatiah Security Index
   Обновление: каждые 30 минут через JS (без cron)
   Кэш: mfa_cache.json
   API: fetch_mfa.php
   Дата: 01.11.2025 10:00 UTC
   Актуальные данные: AAL 2, 2–3 заявления/день, 5+ активных миссий
*/
// === ЭКСПОРТ В /factors — БЕЗ КЭША ===
file_put_contents(
    __DIR__ . '/factors/' . pathinfo(__FILE__, PATHINFO_FILENAME) . '.json',
    json_encode(['aal' => $aal, 'last_update' => date('d.m.Y H:i') . ' UTC'], JSON_UNESCAPED_UNICODE)
);
date_default_timezone_set('UTC');
header('Content-Type: text/html; charset=utf-8');
header('Cache-Control: no-cache, must-revalidate');

$update_interval = 30; // Каждые 30 минут

// --- 1. Чтение кэша ---
$cache_file = __DIR__ . '/mfa_cache.json';
$mfa = [
    'last_update' => '01.11.2025 10:00 UTC',
    'aal' => 2,
    'aal_text' => 'Повышенная активность',
    'aal_color' => '#f59e0b',
    'statements_per_day' => 2.5,
    'active_missions' => 5,
    'chart_data' => [2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
    'statements' => [
        ['title' => 'Официальное коммюнике по ситуации в Газе', 'desc' => 'Позиция Израиля по гуманитарным коридорам и перемирию', 'time' => '26.10.2025 14:30', 'source' => '@IsraelMFA', 'urgent' => false],
        ['title' => 'Координация с международными партнерами', 'desc' => 'Консультации с США, ЕС и арабскими странами', 'time' => '25.10.2025 11:15', 'source' => 'Официальный сайт МИД', 'urgent' => false],
        ['title' => 'Заявление для прессы', 'desc' => 'Ответ на резолюции Совета Безопасности ООН', 'time' => '24.10.2025 16:45', 'source' => 'Пресс-служба МИД', 'urgent' => false]
    ],
    'missions' => [
        'ООН (Нью-Йорк): Постоянные консультации в СБ ООН',
        'Вашингтон: Координация с Госдепом США',
        'Брюссель: Переговоры с ЕС',
        'Каир: Посреднические миссии',
        'Амман: Региональная дипломатия'
    ],
    'normal_range' => '1–2',
    'trend' => 'Стабильный уровень'
];

if (file_exists($cache_file) && (time() - filemtime($cache_file)) < 1800) {
    $json = file_get_contents($cache_file);
    $tmp = json_decode($json, true);
    if (json_last_error() === JSON_ERROR_NONE) {
        $mfa = array_merge($mfa, $tmp);
    }
}

// --- 2. Расчёт AAL ---
$aal = (int)$mfa['aal'];
$contribution = round($aal * 0.8, 1); // 4.0 / 5 = 0.8

// --- 3. Синхронизация с total_index.json ---
$total_file = __DIR__ . '/total_index.json';
$total = ['factors'=>[], 'total_aal'=>1.0, 'last_update'=>date('d.m.Y H:i').' UTC', 'factor_count'=>0];
if (file_exists($total_file)) {
    $json = file_get_contents($total_file);
    $tmp = json_decode($json, true);
    if (json_last_error() === JSON_ERROR_NONE) {
        $total = $tmp;
    }
}
$total['factors']['mfa'] = [
    'aal' => $aal,
    'last_update' => $mfa['last_update'],
    'contribution' => $contribution
];
$sum = $cnt = 0;
foreach ($total['factors'] as $f) {
    if (isset($f['aal'])) {
        $sum += $f['aal'];
        $cnt++;
    }
}
$total['total_aal'] = $cnt ? round($sum / $cnt, 2) : 1.0;
$total['factor_count'] = $cnt;
$total['last_update'] = date('d.m.Y H:i').' UTC';
file_put_contents($total_file, json_encode($total, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));

// --- 4. JS-данные ---
$js_data = json_encode([
    'chart_data' => $mfa['chart_data'],
    'aal_color' => $mfa['aal_color'],
    'last_update' => $mfa['last_update']
], JSON_UNESCAPED_UNICODE);
?>
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>Активность МИД Израиля | Avatiah Security Index</title>
    <meta name="description" content="AAL <?= $aal ?>. <?= $mfa['statements_per_day'] ?> заявления/день. <?= $mfa['last_update'] ?>">
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
    <style>
        :root{--bg:#0a0e1a;--card:#1a2332;--border:#2d3748;--text:#e2e8f0;--green:#10b981;--yellow:#f59e0b;--orange:#f97316;--red:#ef4444;--darkred:#dc2626;--font-base:1rem;--font-sm:.875rem;--font-xs:.75rem}
        *{box-sizing:border-box;margin:0;padding:0}
        html{font-size:100%;scroll-behavior:smooth}
        body{background:var(--bg);color:var(--text);font-family:'Inter',sans-serif;line-height:1.6;padding:clamp(.5rem,2vw,1rem);min-height:100vh;display:flex;flex-direction:column}
        .container{max-width:1600px;margin:0 auto;display:grid;gap:clamp(1rem,2.5vw,1.5rem)}
        @media(min-width:768px){.container{grid-template-columns:1fr 340px}}
        @media(min-width:1200px){.container{grid-template-columns:1fr 360px}}
        .section{background:var(--card);border-radius:12px;padding:clamp(1rem,2.5vw,1.5rem);border:1px solid var(--border)}
        .header{background:linear-gradient(135deg,#1e3c72,#2a5298);color:#fff;padding:clamp(1.5rem,4vw,2rem);border-radius:16px;text-align:center}
        .header h1{font-size:clamp(1.8rem,5vw,2.8rem);margin-bottom:.5rem}
        .header p{font-size:clamp(.9rem,2vw,1rem);opacity:.9}
        .back-link{display:inline-block;margin-top:1rem;color:#fff;text-decoration:underline;font-size:clamp(.8rem,1.8vw,.9rem)}
        .aal-circle{width:clamp(100px,20vw,140px);height:clamp(100px,20vw,140px);border-radius:50%;margin:0 auto 1rem;display:flex;align-items:center;justify-content:center;font-size:clamp(2rem,6vw,3rem);font-weight:700}
        .aal-info{text-align:center}
        .aal-info h2{font-size:clamp(1.3rem,4vw,1.8rem);margin:.5rem 0}
        .aal-stats{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;margin:.75rem 0;font-size:clamp(.85rem,2vw,.95rem)}
        .sources{text-align:center;font-size:var(--font-xs);color:#94a3b8;margin-top:.5rem}
        .chart-container{position:relative;height:clamp(280px,45vw,340px);margin:1.5rem 0;background:rgba(255,255,255,.05);border-radius:8px;padding:1rem}
        .aal-scale{display:grid;grid-template-columns:repeat(5,1fr);gap:.5rem;margin:1rem 0}
        .scale-item{padding:clamp(.6rem,1.5vw,.9rem);border-radius:8px;text-align:center;font-size:var(--font-xs);background:rgba(255,255,255,.03)}
        .scale-item.active{border:2px solid #fff}
        .scale-item div:first-child{font-weight:700;font-size:1.1em}
        .statement-card{padding:1rem;border-radius:8px;margin:.5rem 0;background:rgba(255,255,255,.03);border-left:4px solid #3498db}
        .statement-urgent{border-left-color:#ef4444}
        .statement-time{font-size:.8rem;color:#94a3b8;margin-top:.5rem}
        .mission-list{list-style:none;padding:0}
        .mission-item{padding:.5rem 0;border-bottom:1px solid var(--border)}
        .mission-item:last-child{border-bottom:none}
        .sidebar .section{margin-bottom:1rem}
        .sidebar h3{font-size:clamp(1rem,2.5vw,1.1rem);margin-bottom:.5rem}
        .aal-thresholds{display:flex;flex-direction:column;gap:.4rem;margin-top:.5rem}
        .threshold{display:flex;align-items:center;font-size:.85rem}
        .threshold-bar{width:100%;height:8px;background:#334155;border-radius:4px;overflow:hidden;margin-left:.5rem}
        .threshold-fill{height:100%;transition:width .3s ease}
        .threshold-1 .threshold-fill{background:var(--green);width:20%}
        .threshold-2 .threshold-fill{background:var(--yellow);width:40%}
        .threshold-3 .threshold-fill{background:var(--orange);width:60%}
        .threshold-4 .threshold-fill{background:var(--red);width:80%}
        .threshold-5 .threshold-fill{background:var(--darkred);width:100%}
        .current-aal{font-weight:700}
        .footer{margin-top:auto;background:#111827;padding:clamp(1.5rem,4vw,2rem);border-top:1px solid var(--border);text-align:center;font-size:var(--font-sm);color:#94a3b8}
        .footer a{color:inherit;text-decoration:underline}
        .update-status{font-size:.8rem;color:#10b981;text-align:center;margin-top:.5rem}
        @media(max-width:480px){.aal-stats{flex-direction:column;align-items:center}.aal-scale{grid-template-columns:1fr}}
        @media(min-width:768px) and (max-width:992px){.container{grid-template-columns:1fr}}
    </style>
</head>
<body>
<div class="container">
    <div class="main-content">
        <div class="header">
            <h1>Активность МИД Израиля</h1>
            <p>Дипломатическая работа | <span id="last-update"><?= htmlspecialchars($mfa['last_update']) ?></span></p>
            <a href="/" class="back-link">Назад к индексу</a>
        </div>

        <div class="section">
            <div class="aal-info">
                <div class="aal-circle" id="aal-circle" style="background:<?= $mfa['aal_color'] ?>"><?= $aal ?>.0</div>
                <h2 id="aal-text"><?= htmlspecialchars($mfa['aal_text']) ?></h2>
                <div class="aal-stats">
                    <div><strong id="statements-value"><?= $mfa['statements_per_day'] ?></strong> заявления/день</div>
                    <div><strong>Норма</strong> (<?= htmlspecialchars($mfa['normal_range']) ?>)</div>
                </div>
            </div>
            <p class="sources">Обновлено: <span id="sources-update"><?= htmlspecialchars($mfa['last_update']) ?></span> | mfa.gov.il, @IsraelMFA</p>
            <p class="update-status" id="update-status">Обновление через <span id="countdown">30:00</span></p>
        </div>

        <div class="section">
            <h2 style="font-size:clamp(1.2rem,3vw,1.4rem);margin-bottom:.75rem;">Дипломатическая активность (10 дней)</h2>
            <div class="chart-container"><canvas id="mfa-chart"></canvas></div>
        </div>

        <div class="section">
            <h2 style="font-size:clamp(1.2rem,3vw,1.4rem);margin-bottom:.75rem;">Последние заявления</h2>
            <div id="statements-container">
                <?php foreach ($mfa['statements'] as $s): ?>
                <div class="statement-card <?= $s['urgent'] ? 'statement-urgent' : '' ?>">
                    <strong><?= htmlspecialchars($s['title']) ?></strong>
                    <p><?= htmlspecialchars($s['desc']) ?></p>
                    <div class="statement-time"><?= htmlspecialchars($s['time']) ?> • <?= htmlspecialchars($s['source']) ?></div>
                </div>
                <?php endforeach; ?>
            </div>
        </div>

        <div class="section">
            <h2 style="font-size:clamp(1.2rem,3vw,1.4rem);margin-bottom:.75rem;">Активные дипломатические миссии</h2>
            <ul class="mission-list">
                <?php foreach ($mfa['missions'] as $m): ?>
                <li class="mission-item"><?= htmlspecialchars($m) ?></li>
                <?php endforeach; ?>
            </ul>
            <p style="margin-top:1rem;font-size:.85rem;color:#94a3b8;">Источник: mfa.gov.il, официальные заявления</p>
        </div>

        <div class="section">
            <h2 style="font-size:clamp(1.2rem,3vw,1.4rem);margin-bottom:.75rem;">Шкала дипломатической активности</h2>
            <div class="aal-scale">
                <div class="scale-item <?= $aal==1?'active':'' ?>" style="background:#10b98120"><div>1</div><div>Норма<br><small>Рутинная работа</small></div></div>
                <div class="scale-item <?= $aal==2?'active':'' ?>" style="background:#f59e0b20"><div>2</div><div>Внимание<br><small>Повышенная активность</small></div></div>
                <div class="scale-item <?= $aal==3?'active':'' ?>" style="background:#f9731620"><div>3</div><div>Риск<br><small>Кризисная дипломатия</small></div></div>
                <div class="scale-item <?= $aal==4?'active':'' ?>" style="background:#ef444420"><div>4</div><div>Критическая<br><small>Экстренные переговоры</small></div></div>
                <div class="scale-item <?= $aal==5?'active':'' ?>" style="background:#dc262620"><div>5</div><div>Максимальная<br><small>Военная дипломатия</small></div></div>
            </div>
        </div>

    </div>

    <div class="sidebar">
        <div class="section">
            <h3>Пороги тревоги (AAL)</h3>
            <div class="aal-thresholds">
                <div class="threshold threshold-1"><span>1 – Рутинная работа</span><div class="threshold-bar"><div class="threshold-fill"></div></div></div>
                <div class="threshold threshold-2"><span>2 – Повышенная активность</span><div class="threshold-bar"><div class="threshold-fill"></div></div></div>
                <div class="threshold threshold-3"><span>3 – Кризисная дипломатия</span><div class="threshold-bar"><div class="threshold-fill"></div></div></div>
                <div class="threshold threshold-4"><span>4 – Экстренные переговоры</span><div class="threshold-bar"><div class="threshold-fill"></div></div></div>
                <div class="threshold threshold-5"><span>5 – Военная дипломатия</span><div class="threshold-bar"><div class="threshold-fill"></div></div></div>
            </div>
            <p style="margin-top:.5rem;font-size:.8rem;text-align:center;">Текущий: <span class="current-aal"><?= $aal ?>.0</span></p>
        </div>

        <div class="section">
            <h3>Метрики</h3>
            <p><strong>Заявлений/день:</strong> <span id="stats-statements"><?= $mfa['statements_per_day'] ?></span></p>
            <p><strong>Активных миссий:</strong> <?= $mfa['active_missions'] ?>+</p>
            <p><strong>Тон:</strong> Сдержанный</p>
            <p><strong>Тренд:</strong> <?= htmlspecialchars($mfa['trend']) ?></p>
        </div>

        <div class="section">
            <h3>Мониторинг</h3>
            <p><strong>Источники:</strong> mfa.gov.il, @IsraelMFA</p>
            <p><strong>Частота:</strong> каждые 30 мин</p>
        </div>

        <div class="section">
            <h3>Связанные факторы</h3>
            <p><a href="gov.php" style="color:#60a5fa;">Правительство</a></p>
            <p><a href="media.php" style="color:#60a5fa;">Медиа</a></p>
            <p><a href="social.php" style="color:#60a5fa;">Социальные сети</a></p>
        </div>

        <div class="section">
            <h3>Обновление</h3>
            <p><strong>Последнее:</strong> <span id="sidebar-update"><?= date('H:i') ?></span></p>
            <p><strong>Следующее:</strong> <span id="next-update">--:--</span></p>
        </div>
    </div>
</div>

<div class="footer">
    <p><strong>Avatiah Security Index</strong> — OSINT-аналитика в реальном времени</p>
    <p>© 2025 Avatiah • <?= date('d.m.Y H:i') ?></p>
</div>

<script>
const js = <?= $js_data ?>;
let chart;

/* ---------- Инициализация графика ---------- */
function initChart() {
    const ctx = document.getElementById('mfa-chart').getContext('2d');
    chart = new Chart(ctx, {
        type: 'line',
        data: {
            labels: ['-10д','-9д','-8д','-7д','-6д','-5д','-4д','-3д','-2д','сегодня'],
            datasets: [{
                label: 'Уровень активности',
                data: js.chart_data,
                borderColor: '#10b981',
                backgroundColor: 'rgba(16,185,129,0.1)',
                fill: true,
                tension: 0.4,
                pointRadius: 3
            }]
        },
        options: {
            responsive: true,
            maintainAspectRatio: false,
            plugins: { legend: { display: false } },
            scales: {
                y: {
                    beginAtZero: true,
                    max: 5,
                    ticks: { stepSize: 1 }
                }
            }
        }
    });
}

/* ---------- Обновление без перезагрузки ---------- */
async function updateData() {
    try {
        await fetch('fetch_mfa.php?' + Date.now());
        const r = await fetch('mfa_cache.json?' + Date.now());
        const data = await r.json();

        document.getElementById('last-update').textContent = data.last_update;
        document.getElementById('aal-circle').textContent = data.aal + '.0';
        document.getElementById('aal-circle').style.background = data.aal_color;
        document.getElementById('aal-text').textContent = data.aal_text;
        document.getElementById('statements-value').textContent = data.statements_per_day;
        document.getElementById('stats-statements').textContent = data.statements_per_day;
        document.getElementById('sidebar-update').textContent = new Date().toTimeString().slice(0,5);

        chart.data.datasets[0].data = data.chart_data;
        chart.update('quiet');

        const statements = document.getElementById('statements-container');
        statements.innerHTML = '';
        data.statements.forEach(s => {
            const div = document.createElement('div');
            div.className = 'statement-card' + (s.urgent ? ' statement-urgent' : '');
            div.innerHTML = `
                <strong>${s.title}</strong>
                <p>${s.desc}</p>
                <div class="statement-time">${s.time} • ${s.source}</div>
            `;
            statements.appendChild(div);
        });

        document.getElementById('update-status').textContent = 'Обновлено!';
        setTimeout(() => document.getElementById('update-status').textContent = 'Обновление через 30:00', 3000);
    } catch (e) {
        console.error('Ошибка обновления:', e);
    }
}

/* ---------- Универсальный таймер обновления ---------- */
const UPDATE_INTERVAL_MINUTES = <?= $update_interval ?>;
let countdownInterval;
function startCountdown() {
    const now = Date.now();
    const next = Math.ceil(now / (UPDATE_INTERVAL_MINUTES * 60 * 1000)) * (UPDATE_INTERVAL_MINUTES * 60 * 1000);
    let remaining = next - now;

    countdownInterval = setInterval(() => {
        remaining -= 1000;
        const min = String(Math.floor(remaining / 60000)).padStart(2, '0');
        const sec = String(Math.floor((remaining % 60000) / 1000)).padStart(2, '0');
        document.getElementById('countdown').textContent = `${min}:${sec}`;
        document.getElementById('next-update').textContent = new Date(next).toTimeString().slice(0, 5);

        if (remaining <= 0) {
            clearInterval(countdownInterval);
            updateData().then(startCountdown);
        }
    }, 1000);
}

/* Запуск */
initChart();
startCountdown();
setTimeout(updateData, 30000);
</script>
</body>
</html>