v1.0.89: detailed code comments — all Python files + index.html architecture overview

This commit is contained in:
2026-07-27 22:02:51 +04:00
parent 7180587538
commit 1cc3f6eb7e
9 changed files with 290 additions and 38 deletions
+37
View File
@@ -41,6 +41,19 @@
</head>
<body>
<!--
=== ПЕРЕМЕННЫЕ ШАБЛОНА JINJA2 ===
config.VERSION — версия приложения (топбар)
token_info.email — email пользователя (топбар)
token_info.company — профиль/компания (топбар)
stand — стенд: dev/test (топбар)
env_token_masked — маскированный env-токен (placeholder)
has_user_token — True если пользователь ввёл свой токен
organization — организация (serviceId=19)
instance_groups — {svc_name: [instances]} для левой колонки
error — сообщение об ошибке
-->
<div class="topbar">
<img src="{{ url_for('static', filename='logo.svg') }}" alt="Nubes" style="height:22px;" />
<span style="font-size:11px;color:var(--muted);">v{{ config.VERSION }}</span>
@@ -111,6 +124,30 @@
</div>
<script>
/*
* === АРХИТЕКТУРА ФРОНТЕНДА ===
*
* Один HTML-файл, ванильный JS (без фреймворков).
* Три колонки: инфраструктура | сервисы | инстансы+операции+параметры.
*
* Глобальное состояние:
* svcInstances — кеш списка инстансов из /api/operations/{svcId}
* selectedInst — UID выбранного инстанса (null если не выбран)
* selectedOp — {opId, opName, svcId} выбранная операция
* pollTimer — setInterval таймер поллинга статуса операции
* SVC_ID = 1 — фиксированный сервис (Болванка)
* AUTOTEST_PREFIX — префикс имён autotest-инстансов
*
* Потоки:
* CREATE: startCreate() → showParams(18,'create') → executeOp(pp) → poll → refresh
* MODIFY: toggleInstance() → runOp('modify',id) → showParams(id,'modify') → validate → executeOp
* БЕЗ ПАРАМЕТРОВ (delete/suspend/resume/redeploy): runOp() → confirm → executeOp({})
*
* Хелперы:
* _esc(s) — HTML-экранирование (" → &quot; & → &amp; < → &lt;)
* validateJson() — проверка JSON.parse для map-полей (onblur + перед отправкой)
* showStages() — отрисовка этапов выполнения операции (⏳/✅/❌)
*/
let svcInstances=[], selectedInst=null, selectedOp=null, pollTimer=null;
const SVC_ID=1;
const AUTOTEST_PREFIX='autotest-';