domovoy_bot/web/templates/sudrf.html

123 lines
7 KiB
HTML
Raw Permalink 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.

{% extends "base.html" %}
{% block title %}Жатва ГАС Правосудие - LKM37{% endblock %}
{% block nav_sudrf %}active{% endblock %}
{% block content %}
<h2 class="mb-4"><i class="bi bi-bank text-danger"></i> Жатва ГАС Правосудие</h2>
<div class="row">
<!-- Инструкция и Статус -->
<div class="col-md-6 mb-4">
<div class="card bg-dark border-danger h-100">
<div class="card-header border-danger text-danger">
<i class="bi bi-info-circle"></i> ИНСТРУКЦИЯ И УПРАВЛЕНИЕ
</div>
<div class="card-body d-flex flex-column justify-content-between">
<div>
<p class="text-white">Этот модуль предназначен для автоматизированного сбора поданных обращений, заявлений и ответов судов с портала ГАС «Правосудие» (ej.sudrf.ru) для последующей склейки в PDF и загрузки в Google Drive (NotebookLM).</p>
<h5 class="text-danger mt-4"><i class="bi bi-1-circle"></i> Шаг 1: Подготовка сессии</h5>
<p class="small text-muted">Нажмите кнопку «Запустить Жатву ГАС Правосудие» ниже. Система откроет скрытый браузер Chromium на виртуальном рабочем столе.</p>
<h5 class="text-danger mt-3"><i class="bi bi-2-circle"></i> Шаг 2: Авторизация ЕСИА</h5>
<p class="small text-muted">Откройте VNC-браузер по ссылке справа и войдите в свой личный кабинет ГАС «Правосудие» через Госуслуги (потребуется пройти 2FA/SMS).</p>
<h5 class="text-danger mt-3"><i class="bi bi-3-circle"></i> Шаг 3: Автоматический парсинг</h5>
<p class="small text-muted">Как только вход будет обнаружен, скрипт перехватит сессию, соберет список дел, сделает скриншоты, скачает вложения и загрузит сводные PDF на Google Drive.</p>
</div>
<div class="mt-4 pt-3 border-top border-secondary">
<div class="d-flex justify-content-between align-items-center mb-3">
<span class="text-white">Статус парсера:</span>
<div id="sudrfStatusBadge" class="badge bg-secondary p-2">НЕИЗВЕСТНО</div>
</div>
<button id="runSudrfParserBtn" class="btn btn-danger w-100 py-2">
<i class="bi bi-play-circle-fill"></i> ЗАПУСТИТЬ ЖАТВУ ГАС ПРАВОСУДИЕ
</button>
</div>
</div>
</div>
</div>
<!-- VNC и Логи -->
<div class="col-md-6 mb-4">
<div class="card bg-dark border-info h-100">
<div class="card-header border-info text-info">
<i class="bi bi-display"></i> СЕССИЯ И ЛОГИ СКАНИРОВАНИЯ
</div>
<div class="card-body d-flex flex-column">
<a href="http://192.168.10.116:6080/vnc.html" target="_blank" class="btn btn-outline-info w-100 py-3 mb-2">
<i class="bi bi-window-fullscreen"></i> ОТКРЫТЬ VNC ЭКРАН (noVNC)
</a>
<div class="alert alert-warning py-2 mb-3 text-warning border-warning" style="font-size: 0.75rem; background: transparent;">
<i class="bi bi-exclamation-triangle"></i> <strong>Внимание:</strong> Если жатва не запущена, VNC-экран будет пустым (черным). Браузер Chromium автоматически откроется на экране сразу после нажатия кнопки «Запустить жатву».
</div>
<div class="d-flex justify-content-between align-items-center mb-2">
<span class="small text-muted">ЛОГИ В РЕАЛЬНОМ ВРЕМЕНИ:</span>
<button id="refreshSudrfStatusBtn" class="btn btn-sm btn-outline-secondary py-0 px-2" style="font-size: 0.75rem;">
<i class="bi bi-arrow-clockwise"></i> ОБНОВИТЬ
</button>
</div>
<pre id="sudrfLogs" class="bg-black text-danger p-3 small border border-secondary flex-grow-1" style="min-height: 250px; overflow-y: scroll; font-family: monospace; font-size: 0.75rem;"></pre>
</div>
</div>
</div>
</div>
{% endblock %}
{% block extra_script %}
<script>
document.getElementById('runSudrfParserBtn').addEventListener('click', async function() {
const btn = this;
if (!confirm('Запустить сборку судебного архива ГАС Правосудие? Потребуется войти через Госуслуги во VNC.')) return;
btn.disabled = true;
btn.innerHTML = '<span class="spinner-border spinner-border-sm"></span> СЕССИЯ ЗАПУЩЕНА...';
try {
const response = await fetch('/api/sudrf/run', { method: 'POST' });
const result = await response.json();
alert(result.message);
} catch (e) {
alert('Ошибка при запуске: ' + e);
} finally {
btn.disabled = false;
btn.innerHTML = '<i class="bi bi-play-circle-fill"></i> ЗАПУСТИТЬ ЖАТВУ ГАС ПРАВОСУДИЕ';
refreshSudrfStatus();
}
});
async function refreshSudrfStatus() {
const badge = document.getElementById('sudrfStatusBadge');
const logs = document.getElementById('sudrfLogs');
try {
const response = await fetch('/api/sudrf/status');
const data = await response.json();
if (data.alive) {
badge.className = 'badge bg-success p-2';
badge.innerText = 'СТАТУС: РАБОТАЕТ';
} else {
badge.className = 'badge bg-danger p-2';
badge.innerText = 'СТАТУС: ОСТАНОВЛЕН';
}
logs.innerText = data.log || "Лог пуст или еще не создан.";
logs.scrollTop = logs.scrollHeight;
} catch (e) {
badge.className = 'badge bg-warning p-2';
badge.innerText = 'ОШИБКА API';
}
}
document.getElementById('refreshSudrfStatusBtn').addEventListener('click', refreshSudrfStatus);
window.addEventListener('load', refreshSudrfStatus);
// Автообновление логов каждые 15 секунд
setInterval(refreshSudrfStatus, 15000);
</script>
{% endblock %}