From 89aa5268e7ab0e750749d2d759050d24aeedcba9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Fri, 31 Jul 2026 12:49:42 +0400 Subject: [PATCH] DOCS: architecture-next update + opus frontend/instance/review prompts --- DOCS/architecture-next.md | 50 ++++++------ DOCS/opus-frontend-prompt.md | 96 ++++++++++++++++++++++++ DOCS/opus-instance-dropdown-questions.md | 45 +++++++++++ DOCS/opus-review-v1.2.0.md | 75 ++++++++++++++++++ HISTORY/2026-07-31-session.md | 67 ++++++++++++++++- 5 files changed, 305 insertions(+), 28 deletions(-) create mode 100644 DOCS/opus-frontend-prompt.md create mode 100644 DOCS/opus-instance-dropdown-questions.md create mode 100644 DOCS/opus-review-v1.2.0.md diff --git a/DOCS/architecture-next.md b/DOCS/architecture-next.md index f16e527..d180401 100644 --- a/DOCS/architecture-next.md +++ b/DOCS/architecture-next.md @@ -1,38 +1,34 @@ -# Архитектура app-autotest — план рефакторинга (2026-07-31) +# Архитектура app-autotest — рефакторинг (2026-07-31) -> Полный план: `DOCS/opus-plan-2026-07-31.md` -> Ветка: `opus-architecture-2026-07-31` +> План: `DOCS/opus-plan-2026-07-31.md` | Ревью: `DOCS/opus-review-v1.2.0.md` +> Текущая версия: **v1.2.1** ✅ -## Проблемы +## ✅ Реализовано (Фазы 1-3) -1. **Дублирование CREATE-флоу:** `routes/api_test.py` и `operations/scenario.py` содержат идентичную логику POST /instances → POST /instanceOperations → send_params_terraform → /run. -2. **Ограничение instance_map:** сценарий привязан к `service_id`, нельзя два инстанса одного сервиса. -3. **Нет общей функции** — правки Terraform-флоу надо делать в двух местах. +### Новые модули +- `api/utils.py` — find_uid(), uid_from_location() (вместо 2 дублей) +- `operations/poll.py` — poll_until_done() (общий поллинг) +- `operations/executor.py` — execute_operation() (единый CREATE/non-CREATE флоу, tracker_add внутри) -## Решение +### Рефакторинг +- `api_test.py` — через executor + poll_until_done, CMDB delete отдельно +- `scenario.py` — через executor + poll, output/ref/bindings резолвинг +- `api_scenario_defs.py` — _validate_steps: output/instance_ref/instance_uid +- `init_db.py` — startup cleanup зависших scenario_runs (>1ч) +- `params-render.js` — общий рендер параметров (вынесен из operations.js) -### Новые файлы -- `operations/executor.py` — `execute_operation()` (единый флоу до /run) -- `operations/poll.py` — `poll_until_done()` (общий цикл поллинга) -- `api/utils.py` — `find_uid()`, `uid_from_location()` (вместо дублей) -- `static/js/params-render.js` — общий рендер параметров - -### Новый формат шагов +### Формат шагов (JSONB, без изменений схемы) ```json {"service_id": 1, "operation": "create", "params": {}, "output": "d1"} {"service_id": 1, "operation": "modify", "params": {}, "instance_ref": "d1"} -{"service_id": 1, "operation": "delete", "params": {}, "instance_uid": "UUID"} ``` +Старый формат (без output/ref) — обратная совместимость через fallback. -### Исправляемые файлы -- `routes/api_test.py` — через executor (+ CMDB delete отдельно) -- `operations/scenario.py` — через executor + poll_until_done + output/ref резолвинг -- `routes/api_scenario_defs.py` — _validate_steps с новыми ключами -- `db/init_db.py` — startup cleanup зависших scenario_runs -- `static/js/scenario-form.js` — модальный редактор с параметрами -- `static/js/operations.js` — использовать params-render.js -- `templates/index.html` — модал + params-render.js -- `app.py` — bump VERSION +## ❌ Не реализовано (Фаза 4) -### Порядок -Фаза 1 (общие модули) → Фаза 2 (формат шагов) → Фаза 3 (миграция вызывающих) → Фаза 4 (UI) +### Модальный редактор сценариев +- `scenario-form.js` — нужна полная переделка +- `index.html` — разметка модала +- Дропдауны сервисов/операций, автоподгрузка параметров +- Поля output/instance_ref +- [↑][↓] перестановка шагов diff --git a/DOCS/opus-frontend-prompt.md b/DOCS/opus-frontend-prompt.md new file mode 100644 index 0000000..7908824 --- /dev/null +++ b/DOCS/opus-frontend-prompt.md @@ -0,0 +1,96 @@ +# Prompt for Opus — Frontend Scenario Editor UI + +## Что это за проект + +Nubes Autotest — Flask + vanilla JS + PostgreSQL. Автотесты для облачной платформы Nubes. +Текущая версия: v1.2.3. Backend-рефакторинг завершён (unified executor, гибкие ссылки). +Сейчас нужно доработать **фронтенд редактора сценариев**. + +**ВСЕ файлы фронтенда лежат здесь:** +`/home/naeel/nubes/autotest/app-autotest/site/` + +## Файлы фронтенда (читай в этом порядке) + +### 1. Страница и стили +`/home/naeel/nubes/autotest/app-autotest/site/templates/index.html` +- Три колонки: infra (280px) | svc (240px) | main (flex) +- В main: inst-list → params-area → create-btn-area → history-card → scenario-card +- Модал: #scenario-modal (уже есть разметка в CSS) +- Загрузка JS: utils.js → params-render.js → instances.js → operations.js → history.js → scenario-form.js → scenario-create.js → scenario-edit.js → scenario-delete.js → scenario-list.js → app.js + +### 2. Текущий редактор сценариев (НЕДАВНО ПЕРЕДЕЛАН — изучи ВЕСЬ файл) +`/home/naeel/nubes/autotest/app-autotest/site/static/js/scenario-form.js` (~170 строк) +- `showScenarioEditor(def)` — открывает модал, загружает /api/services и /api/instances/list в state +- `renderEditor()` — рендерит модал: название, шаги, кнопки Сохранить/Отмена +- `renderStepRow(idx, step)` — рендерит ОДИН шаг: + - Операция: `` сервисов + `` output (имя для ссылок) + - Если не-create: `` +- Затем добавить `