# Sonnet 4.6 — Round 2: оставшиеся баги и план исправлений Дата: 2026-07-29 Контекст: v1.1.12 уже починил NameError и JS error handling. Сейчас v1.1.13 (мелкие UI-фиксы). ## Баги к исправлению ### 🔴 Баг 1: Инстансы всех сервисов показываются под любым выбранным **Файл:** `/home/naeel/nubes/autotest/app-autotest/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--<3rand> Сейчас: `autotest-ms4gzydq` (timestamp base36) Нужно: `autotest-redis-x7k` **Данные:** API `/services/{id}` возвращает `svcShort=redis` **План:** 1. `/home/naeel/nubes/autotest/app-autotest/site/routes/main.py` `/api/operations/{svc_id}` — добавить `svcShort` в JSON-ответ 2. `/home/naeel/nubes/autotest/app-autotest/site/static/app.js` `selectService()` — сохранить `currentSvcShort = d.svcShort` 3. `/home/naeel/nubes/autotest/app-autotest/site/static/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 `/home/naeel/nubes/autotest/app-autotest/site/routes/api_test.py` строка 212 уже шлёт `"descr": ""` — пустое. Нужно заполнить: ``` "descr": "created by autotest v1.1.13" ``` **План:** 1. `/home/naeel/nubes/autotest/app-autotest/site/static/app.js` `executeOp()` — передать `descr` в тело запроса 2. `/home/naeel/nubes/autotest/app-autotest/site/routes/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. `/home/naeel/nubes/autotest/app-autotest/site/routes/api_test.py` содержит ДУБЛИКАТ эндпоинта `/api/operations/{svc_id}` (строка 108-148), который никогда не вызывается из-за порядка регистрации blueprint'ов. Удалить ли его, или он нужен для чего-то? **Файлы для проверки (только эти):** - `/home/naeel/nubes/autotest/app-autotest/site/routes/main.py` (строки 155-230) - `/home/naeel/nubes/autotest/app-autotest/site/routes/api_test.py` (строки 108-148, 195-280) - `/home/naeel/nubes/autotest/app-autotest/site/static/app.js` (строки 85-130, 240-270)