DOCS: architecture-next update + opus frontend/instance/review prompts

This commit is contained in:
2026-07-31 12:49:42 +04:00
parent c7b1f4d459
commit 89aa5268e7
5 changed files with 305 additions and 28 deletions
+66 -1
View File
@@ -1,4 +1,4 @@
# 2026-07-31 — Сессия (v1.1.57 → ...)
# 2026-07-31 — Сессия (v1.1.57 → v1.2.1)
## Контекст
Обсуждение архитектуры: унификация ручного и сценарного режимов, гибкие ссылки на инстансы, новый UI редактора сценариев.
@@ -69,3 +69,68 @@
- E17. lock_check оставить
- E18. _op_results не в scope
- E19. Порядок: executor → формат → api_test/scenario → UI
### Финальный план (Опус, утверждён)
Сохранён в `DOCS/opus-plan-2026-07-31.md`. Ветка: `opus-architecture-2026-07-31`.
**4 фазы, 13 шагов:**
**Фаза 1 — Общие модули:**
- `api/utils.py` (NEW) — find_uid(), uid_from_location()
- `operations/poll.py` (NEW) — poll_until_done()
- `operations/executor.py` (NEW) — execute_operation() до /run, без поллинга
**Фаза 2 — Формат шагов:**
- `routes/api_scenario_defs.py` — _validate_steps с output/instance_ref/instance_uid
- `operations/scenario.py` — резолвинг instance_uid > instance_ref > service_id
**Фаза 3 — Миграция вызывающих:**
- `routes/api_test.py` — CMDB delete early return, остальное через executor
- `operations/scenario.py` — через executor + poll_until_done
- `db/init_db.py` — startup cleanup зависших scenario_runs
**Фаза 4 — UI редактора:**
- `static/js/params-render.js` (NEW) — общий рендер параметров
- `static/js/operations.js` — использовать params-render.js
- `static/js/scenario-form.js` — модальный редактор
- `templates/index.html` — разметка модала
### CMDB delete
Жёсткое удаление через `DELETE cmdb-api.deck.nubes.ru/instances/{uid}` (без авторизации).
Нужно для недосозданных инстансов (not created). Остаётся в api_test.py, не в executor.
Добавлено после переписки с Георгием Родионовым 29.07.2026.
## Реализация (v1.2.0 — v1.2.1)
### v1.2.0 — Unified executor + flexible refs
**Новые файлы:** api/utils.py, operations/poll.py, operations/executor.py, static/js/params-render.js
**Изменено:** api_test.py (через executor + poll), scenario.py (output/ref/bindings), api_scenario_defs.py (_validate_steps), init_db.py (cleanup), operations.js (→ params-render), index.html (load order)
- Дублирование CREATE-флоу устранено: ручной и сценарный → один executor
- instance_uid > instance_ref > service_id (гибкие ссылки)
- Общий поллинг poll_until_done()
- +254 / −277 строк (меньше кода)
### v1.2.1 — Opus review fixes
**Критическое:** tracker_add внутрь executor (защита от сирот, A3)
**Исправлено:** labelCls в renderMapFixedRow, descr с контекстом, порядок скриптов
**5 файлов:** executor.py, api_test.py, scenario.py, params-render.js, app.py
### Проверка в поде (v1.2.1)
- Все 4 новых файла на месте
- 11 JS → 200, порядок правильный
- Schema OK, seed OK, API отвечает
## Что дальше
**Фаза 4 — модальный редактор сценариев (✅ v1.2.2-v1.2.4):**
- ✅ Модал с дропдаунами сервисов/операций
- ✅ output/instance_ref с облачными инстансами
- ✅ Кнопки CRUD крупнее, справка «📖 Как заполнять»
**Фаза 5 — редактор параметров (план от Опус, НЕ РЕАЛИЗОВАНО):**
- Заменить ручной key=value на автоподгрузку через params-render.js
- Параметры в свёрнутом `<details>` внутри карточки шага
- Хранение: символические имена в БД, обратный маппинг numeric→name при сохранении
- Снапшот параметров перед ре-рендером (защита от потери правок)
- 3 развилки решены: без ссылок на output в параметрах, всегда шаблон, полный сброс при смене операции