From 1fb1a488a7ce8b942de36821c394f123dc617030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Mon, 3 Aug 2026 08:57:05 +0400 Subject: [PATCH] =?UTF-8?q?v0.5.10:=20=D0=B3=D0=BB=D0=B0=D0=B2=D0=BD=D0=B0?= =?UTF-8?q?=D1=8F=20=E2=80=94=20=D0=BF=D0=BE=D0=BB=D0=BD=D0=BE=D0=B5=20?= =?UTF-8?q?=D1=80=D1=83=D0=BA=D0=BE=D0=B2=D0=BE=D0=B4=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D0=BE:=20=D0=B7=D0=B0=D0=B4=D0=B5=D1=80=D0=B6=D0=BA=D0=B0,=20?= =?UTF-8?q?=D1=81=D0=B1=D1=80=D0=BE=D1=81,=20fail-next,=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BB=D0=B0=D0=B4=D0=BA=D0=B0,=20lifecycle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/config/loader.py | 2 +- site/static/style.css | 28 +++++++++++++++ site/templates/index.html | 72 ++++++++++++++++++++++++++++++++++----- 3 files changed, 92 insertions(+), 10 deletions(-) diff --git a/site/config/loader.py b/site/config/loader.py index 3a25631..2596d25 100644 --- a/site/config/loader.py +++ b/site/config/loader.py @@ -80,7 +80,7 @@ SERVICES = _DF["SERVICES"] OPS_INDEX = _DF["OPS_INDEX"] DELAY = float(os.getenv("MOCK_OP_DELAY", "0.1")) -VERSION = "0.5.9" +VERSION = "0.5.10" def get_services(stand_id): diff --git a/site/static/style.css b/site/static/style.css index f05bcfc..5febb52 100644 --- a/site/static/style.css +++ b/site/static/style.css @@ -175,6 +175,34 @@ main { opacity: 1; } +/* ── Feature Grid ── */ +.feature-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 16px; +} + +.feature-item { + background: var(--brand-grey-light); + border-radius: var(--radius-sm); + padding: 16px; +} + +.feature-item h4 { + font-size: 15px; + margin-bottom: 8px; +} + +.feature-item p { + font-size: 13px; + color: var(--text-muted); + margin-bottom: 8px; +} + +.feature-item .code-block { + font-size: 12px; +} + /* ── Dots ── */ .dot { display: inline-block; diff --git a/site/templates/index.html b/site/templates/index.html index 8373c19..badb5a1 100644 --- a/site/templates/index.html +++ b/site/templates/index.html @@ -92,31 +92,85 @@ {% if stands_list|length > 1 %}Стенд: {{ current_stand }}{% endif %}
-

1. Получить список сервисов

+ +

📡 Базовые команды

+ +

Получить список сервисов:

curl -s {{ endpoint }}/{% if stands_list|length > 1 %}{{ current_stand }}/{% endif %}api/v1/svc/services | python3 -m json.tool
-

2. Создать инстанс

+

Создать инстанс:

curl -s -X POST {{ endpoint }}/{% if stands_list|length > 1 %}{{ current_stand }}/{% endif %}api/v1/svc/instances \
   -H "Content-Type: application/json" \
   -d '{"serviceId": 1, "displayName": "my-instance"}' | python3 -m json.tool
-

3. Создать и запустить операцию

-
# Создать операцию
+        

Создать операцию, установить параметры, запустить:

+
# 1. Создать операцию (получить opUid из ответа)
 curl -s -X POST {{ endpoint }}/{% if stands_list|length > 1 %}{{ current_stand }}/{% endif %}api/v1/svc/instanceOperations \
   -H "Content-Type: application/json" \
   -d '{"instanceUid": "<uid>", "operation": "create", "svcOperationId": 18}'
 
-# Установить параметры
+# 2. Установить каждый параметр (повторить для всех)
 curl -s -X POST {{ endpoint }}/{% if stands_list|length > 1 %}{{ current_stand }}/{% endif %}api/v1/svc/instanceOperationCfsParams \
   -H "Content-Type: application/json" \
   -d '{"instanceOperationUid": "<opUid>", "svcOperationCfsParamId": 242, "paramValue": "my-value"}'
 
-# Запустить
+# 3. Запустить операцию (будет ждать {{ delay }}s)
 curl -s -X POST {{ endpoint }}/{% if stands_list|length > 1 %}{{ current_stand }}/{% endif %}api/v1/svc/instanceOperations/<opUid>/run
-

4. Сбросить состояние

-
curl -s -X POST {{ endpoint }}/{% if stands_list|length > 1 %}{{ current_stand }}/{% endif %}api/v1/svc/_mock/reset \
-  -H "X-Mock-Auth: test-token-123"
+
+ +

🛠 Управление полигоном (служебные эндпоинты)

+ +
+
+

⏱ Задержка операций

+

Каждый POST /run ждёт {{ delay }} секунд перед ответом — эмуляция времени выполнения в облаке.

+

Текущая: {{ delay }}s

+
# Сделать операции мгновенными
+curl -s -X POST {{ endpoint }}/{% if stands_list|length > 1 %}{{ current_stand }}/{% endif %}api/v1/svc/_mock/delay/0
+
+# Поставить задержку 3 секунды
+curl -s -X POST {{ endpoint }}/{% if stands_list|length > 1 %}{{ current_stand }}/{% endif %}api/v1/svc/_mock/delay/3
+
+# Максимум — 5 секунд (защита healthcheck'а)
+
+ +
+

🧹 Сброс состояния

+

Удаляет все инстансы и операции на текущем стенде. Полезно перед каждым тестом.

+
curl -s -X POST {{ endpoint }}/{% if stands_list|length > 1 %}{{ current_stand }}/{% endif %}api/v1/svc/_mock/reset
+
+ +
+

💥 Симуляция ошибок

+

Следующий POST /run упадёт с ошибкой. One-shot: после использования флаг сбрасывается.

+
# Включить
+curl -s -X POST {{ endpoint }}/{% if stands_list|length > 1 %}{{ current_stand }}/{% endif %}api/v1/svc/_mock/fail-next
+
+# Следующий run → {"ok": false, "error": "mock failure..."}
+# После этого — снова работает нормально
+
+ +
+

📊 Отладка

+

Посмотреть текущее состояние всех инстансов и операций:

+
curl -s {{ endpoint }}/{% if stands_list|length > 1 %}{{ current_stand }}/{% endif %}api/v1/svc/_mock/state | python3 -m json.tool
+

Список загруженных сервисов:

+
curl -s {{ endpoint }}/{% if stands_list|length > 1 %}{{ current_stand }}/{% endif %}api/v1/svc/_mock/services | python3 -m json.tool
+
+
+ +
+ +

🔁 Жизненный цикл операции

+
    +
  1. GET /instanceOperations/default/{svcOperationId} — узнать какие параметры нужны
  2. +
  3. POST /instanceOperations — создать операцию (получить opUid)
  4. +
  5. POST /instanceOperationCfsParams × N — установить каждый параметр
  6. +
  7. GET /{opUid}/validate-cfs — проверить корректность
  8. +
  9. POST /{opUid}/run — выполнить (ждёт {{ delay }}s)
  10. +
  11. GET /{opUid}?fields=dtFinish,isSuccessful — проверить результат
  12. +