kazakhtelecom-ai-agent/index.html

182 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>QAZAQtelecom HSE — План ПБ 2026</title>
<link rel="stylesheet" href="style.css">
</head>
<body onload="alert('page loaded')" style="margin:0">
<div id="login"><div>
<h1><span>QAZAQtelecom</span> HSE</h1>
<p>План производственной безопасности 2026</p>
<input id="lem" placeholder="curator@telecom.kz">
<input id="lpw" type="password" placeholder="Пароль">
<p id="lerr" style="color:#EF4444;font-size:12px;display:none">Неверная почта</p>
<button class="btn" style="width:100%" onclick="doLogin()">Войти</button>
</div></div>
<div id="app">
<div id="sidebar">
<div class="logo">QAZAQtelecom <span>HSE</span></div>
<div class="user" id="su_name"></div>
<a class=" active" id="snav_events" onclick="switchTab('events')"><span>Мероприятия</span></a>
<a class="" id="snav_analytics" onclick="switchTab('analytics')"><span>Аналитика</span></a>
<a class="" id="snav_reports" onclick="switchTab('reports')"><span>Отчётность</span></a>
<a class="" id="snav_ai" onclick="switchTab('ai')"><span>Джарвис</span></a>
<a class="" id="snav_hse" onclick="switchTab('hse')"><span>HSE.sk.kz</span></a>
<a class="" id="snav_users" onclick="switchTab('users')"><span>Учётные записи</span></a>
<div class="logout"><button class="btn btn-sm btn-r" style="width:100%" onclick="doLogout()">Выйти</button></div>
</div>
<div id="main">
<div class="top"><h2 id="page_title">Мероприятия</h2>
<div style="display:flex;gap:8px;align-items:center">
<span id="stor_ind" class="stor-bar"></span>
<button class="btn btn-sm btn-o" onclick="saveBackup()">Резерв</button>
<button class="btn btn-sm btn-g" onclick="document.getElementById('fu').click()">Восст.</button>
<input type="file" id="fu" accept=".json" style="display:none" onchange="loadBackup(this)">
</div></div>
<div id="tab_events">
<div class="fr">
<input id="sea" placeholder="Поиск..." oninput="renderEv()">
<select id="fs" onchange="renderEv()"><option value="">Все статусы</option><option value="warn">В процессе</option><option value="done">Исполнено</option><option value="late">Просрочено</option></select>
<select id="fb" onchange="renderEv()"><option value="">Все филиалы</option></select>
<span id="sc" style="font-size:12px;color:#64748B;margin-left:auto"></span>
</div>
<div class="card" id="ev_content"></div>
</div>
<div id="tab_analytics" style="display:none">
<div class="stat-grid" id="an_stats"></div>
<div class="card"><h3>TOP-10 проблемных мероприятий</h3><div id="an_top"></div></div>
<div style="display:flex;gap:8px;margin-bottom:16px">
<button class="btn btn-sm btn-o" onclick="dlAnalyticsPPT()">Скачать PPT</button>
<button class="btn btn-sm btn-r" onclick="dlAnalyticsPDF()">Скачать PDF</button>
<button class="btn btn-sm" onclick="dlAnalyticsWord()">Скачать Word</button>
</div>
<div class="card" id="ltif_card"><h3>LTIF — Коэффициент частоты травм</h3>
<p style="font-size:12px;color:#64748B;margin-bottom:8px">LTIF = (A × 1 000 000) / Человеко-часы, где A — число пострадавших</p>
<div style="display:flex;gap:8px;flex-wrap:wrap;align-items:end;margin-bottom:10px">
<div><span style="font-size:11px;color:#64748B">Месяц</span>
<select id="ltif_month" style="padding:6px 10px;border:1px solid #E2E8F0;border-radius:6px;font-size:12px">
<option value="0">Январь</option><option value="1">Февраль</option><option value="2">Март</option>
<option value="3">Апрель</option><option value="4">Май</option><option value="5">Июнь</option>
<option value="6">Июль</option><option value="7">Август</option><option value="8">Сентябрь</option>
<option value="9">Октябрь</option><option value="10">Ноябрь</option><option value="11">Декабрь</option>
</select></div>
<div><span style="font-size:11px;color:#64748B">Человеко-часы</span>
<input id="ltif_hours" type="number" placeholder="0" style="width:130px;padding:6px;border:1px solid #E2E8F0;border-radius:6px;font-size:12px"></div>
<div><span style="font-size:11px;color:#64748B">Пострадавших (A)</span>
<input id="ltif_inj" type="number" placeholder="0" style="width:80px;padding:6px;border:1px solid #E2E8F0;border-radius:6px;font-size:12px"></div>
<button class="btn btn-sm btn-g" onclick="saveLTIF()">Сохранить</button>
<button class="btn btn-sm" onclick="loadLTIF()">Загрузить</button>
</div>
<div id="ltif_result" style="font-size:14px;padding:8px 0"></div>
<div id="ltif_table"></div>
<div id="ltif_corr_div"></div>
</div>
</div>
<div id="tab_reports" style="display:none">
<div class="card"><h3>Выгрузка сводного отчёта</h3>
<p style="font-size:13px;color:#64748B;margin-bottom:12px">Выберите период и формат для скачивания отчёта.</p>
<div class="fr">
<span style="font-size:13px;color:#64748B">Период:</span>
<select id="rp_period" style="padding:6px 10px;border:1px solid #E2E8F0;border-radius:6px" onchange="rpPeriodChange()">
<option value="year">Год</option>
<option value="month">Месяц</option>
<option value="q1">Январь-Март (Q1)</option>
<option value="q2">Апрель-Июнь (Q2)</option>
<option value="q3">Июль-Сентябрь (Q3)</option>
<option value="q4">Октябрь-Декабрь (Q4)</option>
<option value="h1">1-е полугодие</option>
<option value="h2">2-е полугодие</option>
</select>
<select id="rp_month" onchange="renderReports()" style="padding:6px 10px;border:1px solid #E2E8F0;border-radius:6px;display:none">
<option value="0">Январь</option><option value="1">Февраль</option><option value="2">Март</option>
<option value="3">Апрель</option><option value="4">Май</option><option value="5">Июнь</option>
<option value="6">Июль</option><option value="7">Август</option><option value="8">Сентябрь</option>
<option value="9">Октябрь</option><option value="10">Ноябрь</option><option value="11" selected>Декабрь</option>
</select>
<select id="rp_year" style="padding:6px 10px;border:1px solid #E2E8F0;border-radius:6px">
<option>2026</option><option>2027</option>
</select>
<select id="rp_status" style="padding:6px 10px;border:1px solid #E2E8F0;border-radius:6px">
<option value="">Все статусы</option>
<option value="warn">В процессе</option>
<option value="done">Исполнено</option>
<option value="late">Просрочено</option>
</select>
</div>
<div style="display:flex;gap:8px;flex-wrap:wrap">
<button class="btn btn-sm btn-g" onclick="dlCSV()">CSV</button>
<button class="btn btn-sm" onclick="dlHTML()">HTML</button>
<button class="btn btn-sm btn-o" onclick="dlWord()">Word</button>
<button class="btn btn-sm btn-r" onclick="dlPdf()">PDF</button>
</div>
<p id="rp_count" style="font-size:12px;color:#64748B;margin-top:8px"></p>
</div>
<div class="card" id="rp_preview"></div>
</div>
<div id="tab_users" style="display:none">
<div class="card"><h3>Учётные записи</h3>
<p style="font-size:13px;color:#64748B;margin-bottom:8px">Управление ответственными лицами по филиалам</p>
<button class="btn btn-sm btn-g" onclick="showRegModal()">+ Зарегистрировать</button>
<div id="users_list" style="margin-top:14px"></div>
</div></div>
<div id="tab_hse" style="display:none">
<div class="card"><h3>Интеграция с HSE.sk.kz</h3>
<p style="font-size:13px;color:#64748B;margin-bottom:16px">Направление подписанного сводного отчёта по месяцам в систему hse.sk.kz</p>
<div style="margin-bottom:12px"><strong>Месяц:</strong>
<input type="month" id="hse_month" style="padding:6px 10px;border:1px solid #E2E8F0;border-radius:6px;margin-left:8px">
</div>
<div style="margin-bottom:12px"><strong>Формат:</strong>
<select id="hse_fmt" style="padding:6px 10px;border:1px solid #E2E8F0;border-radius:6px;margin-left:8px">
<option value="word">Word (.docx)</option>
<option value="pdf">PDF</option>
</select>
</div>
<div style="margin-bottom:12px"><strong>API Ключ:</strong>
<input id="hse_key" type="password" placeholder="Ключ API HSE.sk.kz" style="padding:6px 10px;border:1px solid #E2E8F0;border-radius:6px;margin-left:8px;width:300px">
</div>
<button class="btn btn-sm btn-g" onclick="hseSend()" id="hse_btn">Отправить отчёт в HSE.sk.kz</button>
<div id="hse_result" style="margin-top:12px;font-size:13px"></div>
</div></div>
<div id="tab_ai" style="display:none">
<div class="card">
<div class="chat-q">
<button onclick="aiAsk('сводка')">Сводка</button>
<button onclick="aiAsk('просроченные')">Просроченные</button>
<button onclick="aiAsk('риски')">Риски</button>
<button onclick="aiAsk('рейтинг')">Рейтинг</button>
<button onclick="aiAsk('прогноз')">Прогноз</button>
<button onclick="aiAsk('статус')">Статус</button>
<button onclick="aiAsk('план')">План действий</button>
</div>
<div class="chat-box" id="ai_chat"></div>
<div class="chat-inp"><input id="ai_inp" placeholder="Спроси про план ПБ..." onkeydown="if(event.key=='Enter')aiSend()">
<button class="btn btn-sm" onclick="aiSend()">Отправить</button></div>
</div></div>
</div></div>
<div id="modal" class="mod-overlay" onclick="if(event.target===this)closeModal()">
<div class="mod-box" id="modal_body"></div>
</div>
<div id="regModal" class="mod-overlay" onclick="if(event.target===this)closeRegModal()">
<div class="mod-box" style="max-width:500px">
<h3 style="margin-bottom:14px">Регистрация пользователя</h3>
<div style="margin-bottom:8px"><label style="font-size:12px;color:#64748B">Email (логин)</label>
<input id="reg_email" placeholder="ivanov" style="width:100%;padding:8px;border:1px solid #E2E8F0;border-radius:6px;font-size:13px"></div>
<div style="margin-bottom:8px"><label style="font-size:12px;color:#64748B">ФИО</label>
<input id="reg_name" placeholder="Иванов И.И." style="width:100%;padding:8px;border:1px solid #E2E8F0;border-radius:6px;font-size:13px"></div>
<div style="margin-bottom:8px"><label style="font-size:12px;color:#64748B">Телефон</label>
<input id="reg_phone" placeholder="+77001234567" style="width:100%;padding:8px;border:1px solid #E2E8F0;border-radius:6px;font-size:13px"></div>
<div style="margin-bottom:8px"><label style="font-size:12px;color:#64748B">Филиал</label>
<select id="reg_branch" style="width:100%;padding:8px;border:1px solid #E2E8F0;border-radius:6px;font-size:13px"></select></div>
<div style="margin-bottom:14px"><label style="font-size:12px;color:#64748B">Пароль</label>
<input id="reg_pass" type="password" placeholder="****" style="width:100%;padding:8px;border:1px solid #E2E8F0;border-radius:6px;font-size:13px"></div>
<div style="display:flex;gap:8px;justify-content:flex-end">
<button class="btn btn-sm" style="background:#E2E8F0;color:#0B1A2E" onclick="closeRegModal()">Отмена</button>
<button class="btn btn-sm btn-g" onclick="addUser()">Зарегистрировать</button>
</div></div></div>
<script src="script.js"></script>
<script>alert("inline works");</script>
</body>
</html>