docs: receive all docs from app-autotest
This commit is contained in:
@@ -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+ версий
|
||||
Reference in New Issue
Block a user