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. +