docs: Sonnet round 2 — remaining bugs and fix plan

This commit is contained in:
2026-07-29 09:22:36 +04:00
parent 8f802c3a17
commit 4dd636be3b
+66
View File
@@ -0,0 +1,66 @@
# Sonnet 4.6 — Round 2: оставшиеся баги и план исправлений
Дата: 2026-07-29
Контекст: v1.1.12 уже починил NameError и JS error handling. Сейчас v1.1.13 (мелкие UI-фиксы).
## Баги к исправлению
### 🔴 Баг 1: Инстансы всех сервисов показываются под любым выбранным
**Файл:** `site/routes/main.py`, строка 193-194, функция `api_operations(svc_id)`
```python
for i in instances:
display_name = str(i.get("displayName", "") or "")
if not display_name.startswith(AUTOTEST_PREFIX):
continue # не наш инстанс
# ← НЕТ проверки i.get("serviceId") != svc_id
```
Фильтр только по префиксу `autotest-`, без проверки что `instance.serviceId == svc_id`.
Результат: под сервисом «Container Registry» показываются S3 бакеты, под «Redis» — Flask инстансы.
**Предлагаемый фикс:** добавить `if i.get("serviceId") != svc_id: continue`
### 🟡 Задача 2: displayName → autotest-<svcShort>-<3rand>
Сейчас: `autotest-ms4gzydq` (timestamp base36)
Нужно: `autotest-redis-x7k`
**Данные:** API `/services/{id}` возвращает `svcShort=redis`
**План:**
1. `main.py` `/api/operations/{svc_id}` — добавить `svcShort` в JSON-ответ (из `get_service_detail`)
2. `app.js` `selectService()` — сохранить `currentSvcShort = d.svcShort`
3. `app.js` `makeCreateDisplayName()``autotest-${currentSvcShort}-${3rand}`
4. Коллизии обрабатываются в `_unique_display_name()` на бэкенде
### 🟡 Задача 3: description (descr) при создании
HAR-файл (`development/dummycreate.har`) показывает что Nubes API принимает `descr`:
```json
POST /instances
{"serviceId":1, "displayName":"dummy-11255555", "descr":""}
```
В autotest `api_test.py` строка 212 уже шлёт `"descr": ""` — пустое. Нужно заполнить:
```
"descr": "created by autotest v1.1.13"
```
**План:**
1. `app.js` `executeOp()` — передать `descr` в тело запроса
2. `api_test.py` `/api/test` — принять `descr` из JSON, подставить в payload
## Вопросы к Sonnet
1. Верен ли план для бага 1? Не сломает ли фильтр по serviceId tracker-fallback логику?
2. Для задачи 2: как лучше генерировать 3 случайных символа? `Math.random().toString(36).slice(2,5)`? Не будет ли коллизий?
3. Для задачи 3: `descr` уже есть в payload. Достаточно ли просто подставить строку, или нужно что-то ещё?
4. Есть ли ещё какие-то баги, которые мы упустили?
5. `api_test.py` содержит ДУБЛИКАТ эндпоинта `/api/operations/{svc_id}` (строка 108-148), который никогда не вызывается из-за порядка регистрации blueprint'ов. Удалить ли его, или он нужен для чего-то?
**Файлы для проверки (только эти):**
- `site/routes/main.py` (строки 155-230)
- `site/routes/api_test.py` (строки 108-148, 195-280)
- `site/static/app.js` (строки 85-130, 240-270)