# Sonnet 4.6 — Финальный аудит: баги и действия пользователя Дата: 2026-07-30 Версия: v1.1.43 ## Контекст За 2 дня: 43 версии. Множество правок. Только что нашли баг — в `toggleInstance` удалили `const opsEl = ...` при рефакторинге, упало с ReferenceError. Нужно найти ВСЕ подобные баги. ## Файлы для проверки (ВСЕ) - `/home/naeel/nubes/autotest/app-autotest/site/static/app.js` — 460 строк, весь фронтенд - `/home/naeel/nubes/autotest/app-autotest/site/routes/api_test.py` — бэкенд - `/home/naeel/nubes/autotest/app-autotest/site/templates/index.html` — HTML/CSS - `/home/naeel/nubes/autotest/app-autotest/site/api/http_client.py` — HTTP-клиент - `/home/naeel/nubes/autotest/app-autotest/site/operations/get_params.py` — параметры ## Что искать ### 1. ReferenceError / undefined variables - Все ли переменные объявлены перед использованием? - `opsEl`, `svcEl`, `btnSpan`, `inst`, `afterEl` — все ли определены в своей области видимости? ### 2. Все действия пользователя при busy=true Проверь КАЖДУЮ функцию — не вызывает ли она `stopPoll()` до проверки `busy`? Не меняет ли DOM (stages-box, params-area) до проверки? Функции для проверки: - `toggleInstance(iuid)` — строка 76 - `selectService(svcId)` — строка 39 - `startCreate()` — строка 106 - `runOp(opName,opId)` — строка 128 - `showParams(opId,opName)` — строка 146 (вызывается из runOp, startCreate) - `executeOp(params)` — строка 307 - `setFinishedState(...)` — строка 286 - `refreshInstances()` — строка 389 - `toggleHistory()` — строка 410 - `toggleLog()` — строка 456 ### 3. Пустые catch / потерянные ошибки - `showParams` — есть `.catch()` ✅ - `executeOp` — есть `catch(e)` + busy ✅ - `loadHistory` — есть `catch(e)` ✅ - `startCreate` — есть `catch(e)` с fallback ✅ - Поллинг в executeOp — `catch(e)` со счётчиком ✅ - Есть ли другие `try/catch` или `fetch().then()` без обработки ошибок? ### 4. busy не сбрасывается Все ли пути выхода из `executeOp` сбрасывают `busy=false`? - FAIL: `busy=false` + return ✅ - CMDB OK: `busy=false` + setFinishedState ✅ - Поллинг завершился: `setFinishedState` → `busy=false` ✅ - catch: `busy=false` ✅ - Сетевая ошибка в поллинге: счётчик → `setFinishedState` ✅ ### 5. DOM-элементы - Все ли `getElementById` ссылаются на существующие ID в index.html? - `ops-${iuid}` — генерируется динамически в `selectService` и `refreshInstances` - `param-displayname` — генерируется в `showParams` - Все ли статические ID присутствуют? ### 6. Параметры операций - `runOp` → `showParams` — правильно ли для ВСЕХ типов операций? - `showParams` → `opHeader` для не-create — показывается всегда ✅ - `showParams` → `createHeader` для create — показывается ✅ - Пустые params → `opHeader` + кнопка «Запустить» ✅ ### 7. Любые другие баги Что ещё могло сломаться за 43 версии?