docs: Sonnet question — parameterized operations + full audit

This commit is contained in:
2026-07-30 07:32:13 +04:00
parent 9c062a225e
commit 2c35ed5307
+85
View File
@@ -0,0 +1,85 @@
# Sonnet 4.6 — Полный анализ: параметризованные операции инстанса + поиск багов
Дата: 2026-07-30
Версия: v1.1.36
## Контекст
Flask 3.0 + gunicorn + vanilla JS. Тестирует Nubes REST API.
PostgreSQL создался успешно. Но при попытке `create_user` — ошибка: параметры не были запрошены у пользователя, отправлен пустой `{}`.
## 🔴 Проблема 1: runOp() не показывает форму параметров для не-modify операций
**Файл:** `/home/naeel/nubes/autotest/app-autotest/site/static/app.js`, функция `runOp()`, строка 127:
```javascript
function runOp(opName,opId){
if(busy) return;
stopPoll();
selectedOp={opId,opName,svcId:currentSvcId};
if(opName==='modify'){
showParams(opId,opName); // ← только modify показывает форму
}else{
// confirm and execute immediately
if(!confirm(`Запустить ${opName} для ${findInstName()}?`)) return;
executeOp({}); // ← пустые params → API ругается "Missing required parameter"
}
}
```
**Проблема:** PostgreSQL имеет много операций с параметрами:
- `create_user` — нужен username
- `delete_user` — нужен username
- `create_database` — нужны параметры БД
- `delete_database` — нужны параметры
- `restart` — может иметь параметры
- `recovery` — параметры восстановления
- `create_backup` — параметры бэкапа
Все они сейчас идут с `executeOp({})` — пустые params.
**Операции БЕЗ параметров** (можно confirm → execute):
- `delete`
- `suspend`
- `resume`
- `redeploy`
- `reconcile`
**Вопрос:** Как универсально определить, нужны ли параметры для операции?
- Вариант А: проверять `cfsParams` в `/api/operations/{svcId}` — если есть params → показать форму
- Вариант Б: список известных "безпараметровых" операций (delete/suspend/resume/redeploy/reconcile) — для них confirm, для остальных — showParams
- Вариант В: всегда показывать форму (showParams сам разберётся если params пустые)
## 🔴 Проблема 2: refreshInstances() ДОЛЖЕН обновлять список инстансов после create_user и подобных
После `create_user` инстанс не меняется, но список инстансов всё равно надо обновить (в UI могут быть связанные изменения). Сейчас `refreshInstances()` вызывается только при `sd.status === 'OK'`.
**Файл:** `/home/naeel/nubes/autotest/app-autotest/site/static/app.js`, executeOp polling (строка ~357):
```javascript
if(sd.status==='OK'){
await refreshInstances(); // только при OK
}
```
**Вопрос:** Нужно ли вызывать refreshInstances при любом завершении (OK или FAIL)?
## Полный аудит всех оставшихся проблем
Пожалуйста, прочитай ВСЕ файлы и найди ЛЮБЫЕ оставшиеся баги или неустойчивости:
**Файлы для проверки:**
- `/home/naeel/nubes/autotest/app-autotest/site/static/app.js` — весь фронтенд
- `/home/naeel/nubes/autotest/app-autotest/site/routes/api_test.py` — бэкенд
- `/home/naeel/nubes/autotest/app-autotest/site/routes/main.py` — главная + /api/operations
- `/home/naeel/nubes/autotest/app-autotest/site/api/http_client.py` — HTTP-клиент
- `/home/naeel/nubes/autotest/app-autotest/site/operations/get_params.py` — параметры
- `/home/naeel/nubes/autotest/app-autotest/site/templates/index.html` — HTML шаблон
**Что искать:**
1. Все места где параметры операций не запрашиваются у пользователя
2. Все места где busy lock может застрять
3. Необработанные ошибки (пустые catch, пропущенные исключения)
4. Несоответствия между JS и бэкендом (разные имена полей, форматы)
5. Проблемы с `currentSvcShort` — где объявлена, где используется
6. Любые другие баги которые мы пропустили за 35+ версий