DOCS: architecture-next update + opus frontend/instance/review prompts
This commit is contained in:
+23
-27
@@ -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
|
||||
- [↑][↓] перестановка шагов
|
||||
|
||||
Reference in New Issue
Block a user