# Архитектура app-autotest — рефакторинг (2026-07-31) > План: `DOCS/opus-plan-2026-07-31.md` | Ревью: `DOCS/opus-review-v1.2.0.md` > Текущая версия: **v1.2.1** ✅ ## ✅ Реализовано (Фазы 1-3) ### Новые модули - `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) ### Формат шагов (JSONB, без изменений схемы) ```json {"service_id": 1, "operation": "create", "params": {}, "output": "d1"} {"service_id": 1, "operation": "modify", "params": {}, "instance_ref": "d1"} ``` Старый формат (без output/ref) — обратная совместимость через fallback. ## ❌ Не реализовано (Фаза 4) ### Модальный редактор сценариев - `scenario-form.js` — нужна полная переделка - `index.html` — разметка модала - Дропдауны сервисов/операций, автоподгрузка параметров - Поля output/instance_ref - [↑][↓] перестановка шагов