v1.0.50: fix showStages icon (dtFinish); fix api_operations (add tracked orphans); drop not_created filter
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# Sonnet — почему ты пропустил эти баги?
|
||||
|
||||
Отправлено: 27.07.2026, после v1.0.49 (твой анализ выполнен, НЕ ПОМОГЛО)
|
||||
|
||||
---
|
||||
|
||||
## Ты предложил 4 правки — мы сделали. Инстанс ВСЁ РАВНО не появляется в списке. Плюс новый баг: ❌ вместо ⏳ для этапов в процессе.
|
||||
|
||||
## Ты НЕ заметил баг №1: showStages() — ❌ для выполняющихся этапов
|
||||
|
||||
```javascript
|
||||
function showStages(stages){
|
||||
stages.forEach(s=>{
|
||||
const ok=s.isSuccessful;
|
||||
const icon=ok===true?'✅':ok===false?'❌':'⏳'; // ← БАГ
|
||||
```
|
||||
|
||||
API Nubes для этапа в процессе возвращает `isSuccessful: false` (или `null`).
|
||||
Код интерпретирует `false === false` → ❌ (авария).
|
||||
Но этап просто **ещё не завершился** — должен быть ⏳.
|
||||
|
||||
**Правильная логика:** проверять `dtFinish` этапа. Если `dtFinish` нет → ⏳.
|
||||
Если есть и `isSuccessful === true` → ✅. Если есть и `false` → ❌.
|
||||
|
||||
Почему ты это пропустил? Код `showStages()` был в твоём обзоре.
|
||||
|
||||
---
|
||||
|
||||
## Ты НЕ заметил баг №2: api_operations() теряет инстансы
|
||||
|
||||
```python
|
||||
def api_operations(svc_id):
|
||||
tracked = tracker_list() # ← 5 UID (включая новый)
|
||||
tracked_uids = {t["instanceUid"] for t in tracked if t["svcId"] == svc_id}
|
||||
instances = get_instances(_client()) # ← Nubes API: только 4 старых
|
||||
svc_instances = [i for i in instances
|
||||
if i.get("instanceUid") in tracked_uids # ← новый UID НЕ НАЙДЕН
|
||||
and i.get("explainedStatus") not in ("deleted", "not created")]
|
||||
```
|
||||
|
||||
`tracker_add` работает (in-memory, мгновенно). Но `get_instances()` из Nubes API **не сразу** возвращает только что созданный инстанс.
|
||||
Фильтр требует чтобы инстанс был В ОБОИХ источниках. Новый UID есть в `tracked_uids` но отсутствует в `instances` → выпадает.
|
||||
|
||||
Результат: список всегда показывает только старые инстансы, новый — никогда.
|
||||
|
||||
**Правильная логика:** инстансы из трекера, отсутствующие в `get_instances()`, добавлять напрямую со статусом `"creating"`.
|
||||
|
||||
Почему ты это пропустил? Код `api_operations()` был в твоём обзоре, полностью.
|
||||
|
||||
---
|
||||
|
||||
## Что мы имеем после твоих рекомендаций
|
||||
|
||||
| Версия | Что делали | Результат |
|
||||
|--------|-----------|-----------|
|
||||
| v1.0.48 | tracker_add синхронно, except:pass | ❌ инстанса нет |
|
||||
| v1.0.49 | in-memory dict (твоя рекомендация) | ❌ инстанса нет |
|
||||
| v1.0.49 | refreshInstances вместо selectService | ❌ stages ушли, но инстанса нет |
|
||||
|
||||
Трекер РАБОТАЕТ — in-memory dict, добавление мгновенное.
|
||||
НО фильтр `api_operations()` ВЫБРАСЫВАЕТ новый инстанс потому что Nubes API его ещё не проиндексировал.
|
||||
|
||||
## Вопрос
|
||||
|
||||
Ты проанализировал ВЕСЬ код, включая `api_operations()` и `showStages()`.
|
||||
Как ты мог пропустить оба этих бага, которые видны при простой трассировке CREATE-потока?
|
||||
Reference in New Issue
Block a user