Files
autotest/DOCS/architecture-next.md
T
naeel 28dee4632a v1.2.0: unified executor + flexible instance refs + params-render.js
Phase 1 — New modules:
- api/utils.py: find_uid(), uid_from_location() (replaces 2 duplicates)
- operations/poll.py: poll_until_done() (shared sync/async polling)
- operations/executor.py: execute_operation() (single CREATE/non-CREATE flow)

Phase 2 — Format + validation:
- routes/api_scenario_defs.py: _validate_steps with output/instance_ref/instance_uid
- operations/scenario.py: resolve instance_uid > instance_ref > service_id,
  use executor + poll_until_done, persist instance_bindings

Phase 3 — Migration:
- routes/api_test.py: create/non-create through executor, _finish_op through poll_until_done
- db/init_db.py: startup cleanup of stuck scenario_runs (>1h)

Phase 4 — UI shared module:
- static/js/params-render.js: renderParamRow, renderMapFixedRow, collectParams
- static/js/operations.js: use params-render.js (remove duplicates)
- templates/index.html: include params-render.js
- app.py: bump 1.1.57 → 1.2.0
2026-07-31 08:54:57 +04:00

39 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Архитектура 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)