docs: Sonnet round 2 — remaining bugs and fix plan
This commit is contained in:
@@ -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)
|
||||||
Reference in New Issue
Block a user