Files
app-autotest/DOCS/sonnet-params-and-audit.md
T

86 lines
4.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.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+ версий