Files
autotest/DOCS/sonnet-final-audit.md
T

69 lines
3.7 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.
# 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 версии?