From fd55c50753b5a0c1bb03699a1f3105595d843055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Fri, 31 Jul 2026 18:49:29 +0400 Subject: [PATCH] =?UTF-8?q?Short-circuit=20localhost=20(=D0=BD=D0=B5=20NUB?= =?UTF-8?q?ES=5FMOCK),=20=D1=80=D0=B5=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5?= =?UTF-8?q?=20ID=20=D0=B8=D0=B7=20HAR=20=D0=B4=D0=BB=D1=8F=20dummy.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HISTORY/2026-07-31-session.md | 46 ++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/HISTORY/2026-07-31-session.md b/HISTORY/2026-07-31-session.md index f6c467a..6d4c1e3 100644 --- a/HISTORY/2026-07-31-session.md +++ b/HISTORY/2026-07-31-session.md @@ -390,7 +390,7 @@ site/ ``` app-autotest/ ├── site/ -│ ├── api/auth.py # +short-circuit NUBES_MOCK +│ ├── api/auth.py # +short-circuit localhost (НЕ NUBES_MOCK) │ └── ... └── polygon/ ├── server.py # Flask-приложение эмулятора @@ -401,3 +401,47 @@ app-autotest/ ├── dummy.yaml # Болванка └── postgresql.yaml # PostgreSQL (stateOut: users, databases) ``` + +### Short-circuit: localhost вместо NUBES_MOCK + +Опус ПОДТВЕРДИЛ что проверка `localhost` лучше отдельного флага: + +- `detect_endpoint()` хардкодит dev/test и не читает `NUBES_API_ENDPOINT` — всегда лезет в реальные стенды +- При `NUBES_API_ENDPOINT=http://localhost:5001` detect может «угадать» реальный стенд и увести мимо мока +- Решение: в `get_client()` и `get_stand()` — если endpoint начинается с `http://localhost` или `http://127.0.0.1` → пропустить detect, сразу использовать endpoint +- `stand_name("http://localhost:5001")` → `"?"` — поэтому `get_stand()` при localhost возвращает `"mock"` +- Ноль новых env-переменных, существующий `NUBES_API_ENDPOINT` уже в конфиге + +### Реальные ID из HAR для dummy.yaml + +Опус распарсил `development/dummycreate.har` и `development/dummymodify.har`: + +**Операции Болванки (serviceId=1):** + +| operation | svcOperationId | +|-----------|----------------| +| create | 18 | +| delete | 71 | +| modify | 92 | +| suspend | 93 | +| resume | 94 | +| redeploy | 240 | + +**Параметры create (svcOperationCfsParamId):** + +| id | код | тип | +|----|-----|-----| +| 242 | resourceRealm | string (valueList=["dummy"]) | +| 198 | durationMs | integer | +| 199 | *(код не извлечён)* | boolean | +| 200 | *—* | boolean | +| 201 | *—* | integer/enum | +| 286 | *—* | string | +| 321 | *—* | map + dataDescriptor | +| 322 | *—* | string | +| 396 | *—* | string | +| 647 | *—* | map | +| 654 | *—* | array(map) | +| 863 | *—* | array | + +Для мока коды некритичны (мок сам отдаёт и шаблон и state.params — они должны совпадать между собой). Для реалистичности — код в `mock-architecture-prompt.md` достанет полные коды одной строкой Python.