From e0130a2bafc16fa9bee04a3ea6a6222f43df2ff4 Mon Sep 17 00:00:00 2001 From: Repinoid Date: Sun, 25 Oct 2026 18:01:55 +0300 Subject: [PATCH] feat: add in-app user help --- README.md | 8 +- site/app.py | 2 +- site/templates/index.html | 128 ++++++++++++++++++++++++++++++- tests/test_static_regressions.py | 11 +++ 4 files changed, 144 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index af83dcf..6fcdb9d 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Flask-приложение для автотестов сервисов Nubes. ## Архитектура -**Полный обзор:** [../DOCS/ARCHITECTURE-FULL.md](../DOCS/ARCHITECTURE-FULL.md) — все файлы, CREATE flow, глобальное состояние, план развития. +**Обзор:** [../DOCS/ARCHITECTURE.md](../DOCS/ARCHITECTURE.md) — режимы, endpoint'ы и структура приложения. ## Сервис @@ -25,14 +25,16 @@ Flask-приложение для автотестов сервисов Nubes. } ``` -**jsonEnv:** +Для режима эмуляции через Polygon задайте **jsonEnv**: ```json { "POLYGON_ENDPOINT": "https://polygon.pythonk8s.dev.nubes.ru/api/v1/svc" } ``` -URL облачных API всех трёх стендов заданы в `site/api/http_client.py` (`API_ENDPOINTS`). Приложение проверяет пользовательский токен на DEV, TEST и PROD; если не находит подходящий стенд, использует TEST. Чтобы поменять URL, измени значение в `API_ENDPOINTS` и передеплой приложение. `NUBES_API_TOKEN` можно задать отдельно как необязательный fallback-токен; пользовательский токен вводится в UI. +Для прямого cloud-режима `POLYGON_ENDPOINT` не задавайте: приложение определит API DEV/TEST/PROD по пользовательскому токену. `NUBES_API_TOKEN` — необязательный fallback-токен. + +URL облачных API всех трёх стендов заданы в `site/api/http_client.py` (`API_ENDPOINTS`). Если токен не подошёл ни к одному стенду, используется TEST. Чтобы поменять URL, измени значение в `API_ENDPOINTS` и передеплой приложение. Пользовательский cloud-токен вводится в UI. ## Структура diff --git a/site/app.py b/site/app.py index e68399c..ac96daf 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.50" +VERSION = "1.2.51" # Flask-приложение с Jinja2-шаблонами из папки templates/ app = Flask(__name__, template_folder="templates", static_folder="static") diff --git a/site/templates/index.html b/site/templates/index.html index a9d0f28..9ff1013 100644 --- a/site/templates/index.html +++ b/site/templates/index.html @@ -43,6 +43,29 @@ .overview-table { width:100%; table-layout:fixed; } .overview-table td:first-child { width:auto; } .overview-table td:last-child { width:70px; text-align:center; } + .help-content { max-width:1080px; padding:4px 16px 40px; } + .help-warning, .help-note { border-left:3px solid var(--brand-primary); background:#eff6ff; padding:10px 12px; margin:8px 0 14px; } + .help-note { background:#fff7ed; border-color:#ea580c; margin:12px 0 0; } + .help-toc { display:flex; flex-wrap:wrap; gap:6px 16px; padding:10px 0; border-bottom:1px solid var(--brand-gray); } + .help-toc a { color:var(--brand-primary-dark); font-size:12px; text-decoration:none; } + .help-toc a:hover { text-decoration:underline; } + .help-section { padding:18px 0; border-bottom:1px solid var(--brand-gray); scroll-margin-top:12px; } + .help-section h2 { font-size:17px; margin:0 0 10px; } + .help-section h3 { font-size:13px; margin:0 0 6px; } + .help-section p { margin:8px 0; max-width:900px; } + .help-section ol { padding-left:22px; margin:6px 0 10px; } + .help-section li { padding:2px 0; } + .help-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; max-width:900px; } + .help-example { max-width:900px; background:var(--brand-grey-light); border-left:3px solid var(--green); padding:10px 12px; margin:12px 0; } + .help-glossary { display:grid; grid-template-columns:minmax(110px,170px) 1fr; gap:6px 14px; max-width:900px; } + .help-glossary dt { font-weight:600; } + .help-glossary dd { margin:0; } + @media (max-width:700px) { + .help-content { padding:4px 10px 28px; } + .help-grid { grid-template-columns:1fr; gap:8px; } + .help-glossary { grid-template-columns:1fr; gap:2px; } + .help-glossary dd { margin-bottom:8px; } + } @@ -57,6 +80,7 @@ + {% if polygon_enabled %}
@@ -162,7 +186,7 @@