fix: сценарии — перерендер после поллинга + индекс отдельно (v1.2.38)
Баг 1: страница сценариев зависала после завершения
— scenario-list.js: добавлен loadScenarios() после поллинга
Баг 2: история могла быть пустой (ON CONFLICT без индекса)
— init_db.py: CREATE UNIQUE INDEX отдельным cur.execute()
(мультистейтмент SQL в psycopg2 ненадёжен)
This commit is contained in:
+1
-1
@@ -32,7 +32,7 @@ from routes.api_scenario_defs import bp_defs as api_scenario_defs_bp
|
||||
|
||||
# Версия — показывается в топбаре UI. Меняется при КАЖДОМ изменении кода.
|
||||
# Нужна для фильтрации истории (пользователь видит только записи своей версии).
|
||||
VERSION = "1.2.37"
|
||||
VERSION = "1.2.38"
|
||||
|
||||
# Flask-приложение с Jinja2-шаблонами из папки templates/
|
||||
app = Flask(__name__, template_folder="templates", static_folder="static")
|
||||
|
||||
@@ -218,6 +218,11 @@ def init_db():
|
||||
cur.execute(SCHEMA_SQL)
|
||||
cur.execute(MIGRATION_SQL)
|
||||
cur.execute(SCENARIO_RUNS_SQL)
|
||||
|
||||
# Индекс для UPSERT в save_run — отдельным запросом для надёжности
|
||||
# (мультистейтмент SQL в psycopg2 может выполнить не все операторы)
|
||||
cur.execute("CREATE UNIQUE INDEX IF NOT EXISTS idx_runs_op_uid ON runs (op_uid) WHERE op_uid IS NOT NULL")
|
||||
|
||||
conn.commit()
|
||||
cur.close()
|
||||
print("[DB] Schema initialized", flush=True)
|
||||
|
||||
@@ -218,6 +218,7 @@ async function runScenario(defId){
|
||||
busy=false;
|
||||
await refreshInstances(); // обновить список инстансов
|
||||
if(historyOpen) await loadHistory(); // обновить историю
|
||||
await loadScenarios(); // перерендерить список (кнопки)
|
||||
}
|
||||
}catch(e){
|
||||
_scenarioPollErrors++;
|
||||
|
||||
Reference in New Issue
Block a user