diff --git a/DOCS/architecture-next.md b/DOCS/architecture-next.md new file mode 100644 index 0000000..f16e527 --- /dev/null +++ b/DOCS/architecture-next.md @@ -0,0 +1,38 @@ +# Архитектура app-autotest — план рефакторинга (2026-07-31) + +> Полный план: `DOCS/opus-plan-2026-07-31.md` +> Ветка: `opus-architecture-2026-07-31` + +## Проблемы + +1. **Дублирование CREATE-флоу:** `routes/api_test.py` и `operations/scenario.py` содержат идентичную логику POST /instances → POST /instanceOperations → send_params_terraform → /run. +2. **Ограничение instance_map:** сценарий привязан к `service_id`, нельзя два инстанса одного сервиса. +3. **Нет общей функции** — правки Terraform-флоу надо делать в двух местах. + +## Решение + +### Новые файлы +- `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` — общий рендер параметров + +### Новый формат шагов +```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"} +``` + +### Исправляемые файлы +- `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 + +### Порядок +Фаза 1 (общие модули) → Фаза 2 (формат шагов) → Фаза 3 (миграция вызывающих) → Фаза 4 (UI)