diff --git a/site/app.py b/site/app.py index 4613af9..62c245a 100644 --- a/site/app.py +++ b/site/app.py @@ -32,7 +32,7 @@ from routes.api_scenario_defs import bp_defs as api_scenario_defs_bp # Версия — показывается в топбаре UI. Меняется при КАЖДОМ изменении кода. # Нужна для фильтрации истории (пользователь видит только записи своей версии). -VERSION = "1.2.35" +VERSION = "1.2.36" # Flask-приложение с Jinja2-шаблонами из папки templates/ app = Flask(__name__, template_folder="templates", static_folder="static") diff --git a/site/operations/scenario.py b/site/operations/scenario.py index d28ea2c..7409574 100644 --- a/site/operations/scenario.py +++ b/site/operations/scenario.py @@ -281,6 +281,15 @@ def run_scenario(client, steps, client_id, stand, user_email, app_version, scena except Exception as e: print(f"[SCENARIO] save_run failed for step {step_num}: {e}", flush=True) + # Удалить из трекера после успешного delete + # (run_scenario не вызывает tracker_remove — трекер показывал удалённые инстансы как "creating") + if op_name == "delete" and step_status == "OK": + try: + from operations.tracker import remove as tracker_remove + tracker_remove(client_id, stand, instance_uid) + except Exception: + pass # трекер не критичен + # ═══ Шаг 8: обновить scenario_runs (прогресс для UI) ═══ # Пока не последний шаг — статус RUNNING _save_scenario_run(scenario_run_id, diff --git a/site/static/js/views.js b/site/static/js/views.js index 24b8e7a..9abb13c 100644 --- a/site/static/js/views.js +++ b/site/static/js/views.js @@ -41,15 +41,24 @@ function switchView(viewId) { if (!scenarioOpen) toggleScenario(); } - // Логи: специальная обработка — копируем содержимое нижней панели в вид + // Логи: прямая загрузка с API, не полагаемся на нижнюю панель if (viewId === 'logs-view') { - const lp = document.getElementById('log-panel'); const lvc = document.getElementById('log-view-content'); - if (lp && lvc) { - // Копируем текущее содержимое лог-панели в вид - lvc.innerHTML = lp.innerHTML || 'Логи загружаются...'; - lp.style.display = 'none'; // скрываем нижнюю панель + if (lvc) { + lvc.innerHTML = 'Логи загружаются...'; + fetch('/api/log').then(r => r.json()).then(lines => { + if (lines.length) { + lvc.innerHTML = lines.map(l => `