42 lines
2.5 KiB
Markdown
42 lines
2.5 KiB
Markdown
# ⚠️ LEGACY — НЕАКТУАЛЬНО. Исторический документ.
|
|
|
|
# Sonnet — ответ 27.07.2026 (v1.0.49, раунд 2)
|
|
|
|
## Найденные баги
|
|
|
|
### Баг #1: showStages() — ❌ для этапов в процессе
|
|
Файл: `site/templates/index.html`
|
|
Nubes возвращает `isSuccessful: false` для этапов «в процессе». Код:
|
|
```javascript
|
|
const icon=ok===true?'✅':ok===false?'❌':'⏳';
|
|
```
|
|
`false === false` → ❌. Должно быть ⏳.
|
|
|
|
Исправление: проверять `s.dtFinish`. Если нет → ⏳, если есть и `true` → ✅, если есть и `false` → ❌.
|
|
|
|
### Баг #2: api_operations() — фильтр теряет новые инстансы
|
|
Файлы: `site/routes/api_test.py` + `site/routes/main.py`
|
|
После `tracker_add` (мгновенно in-memory) инстанс есть в трекере, но Nubes API ещё не обновил `explainedStatus` — инстанс имеет статус `"not created"`. Фильтр:
|
|
```python
|
|
and i.get("explainedStatus") not in ("deleted", "not created")
|
|
```
|
|
отбрасывает его. Инстанс есть в трекере, есть в ответе API — но статус "not created" → фильтр удаляет.
|
|
|
|
Исправление: для tracked UID не применять фильтр `"not created"`. Добавлять отсутствующие из трекера напрямую.
|
|
|
|
### Баг #3: Дублирующийся route
|
|
`main_bp` зарегистрирован ПЕРВЫМ, `api_test_bp` — ВТОРЫМ. Оба определяют `GET /api/operations/<int:svc_id>`. Flask использует первое совпадение → `main.api_operations` вызывается, `api_test.api_operations` — никогда.
|
|
|
|
### Потенциальная проблема #4: Multi-worker gunicorn
|
|
In-memory dict НЕ работает при >1 gunicorn worker. Один worker добавляет в свой `_data`, другой читает из своего. Если pythonk8s запускает >1 worker — ни одно решение не сработает.
|
|
|
|
Нужно проверить логи пода на `Booting worker with pid`.
|
|
|
|
---
|
|
|
|
## Исправления (v1.0.50)
|
|
|
|
1. `showStages()`: использовать `dtFinish` этапа
|
|
2. `api_operations()`: не фильтровать "not created" для tracked UID, добавлять сирот из трекера
|
|
3. Убрать дублирующийся route
|