diff --git a/doc/progress.md b/doc/progress.md index c07d283..18fea40 100644 --- a/doc/progress.md +++ b/doc/progress.md @@ -1,6 +1,37 @@ # Прогресс разработки -Последнее обновление: 2026-04-01 +Последнее обновление: 2026-04-05 + +--- + +## 2026-04-05 — IoT Telemetry: деплой финального фикса autoTimer (iot-pg-telemetry) + +### Задача +Задеплоить незадеплоенный фикс из предыдущей сессии: `switchTab` больше не убивает `autoTimer`. + +### История багов (исправлены за сессию 2026-04-03..05) + +| Коммит | Баг | Фикс | +|--------|-----|------| +| `b902e13` | HTTP 500 на вкладке Телеметрия (БД тенанта не существует) | `isDBNotExistErr()` → 200 + пустой массив | +| `233e285` | Эмулятор отключается при публикации (ACL-mismatch topic) | Topic исправлен: `{ns}/telemetry/{deviceId}` в `MQTTAuth`+`MQTTAcl` | +| `233e285` | Bridge не подписывался (`+/telemetry/+` запрещён ACL) | Bridge clientid получил разрешение subscribe | +| `911f2bd` | `autoTimer` зависел от DOM (`#emu-payload`) при переключении вкладок | `S.autoTopic` + `generateSensorPayload()` без DOM-зависимости | +| `5e3c82d` | `switchTab` убивал `autoTimer` при любом переходе на другую вкладку | Убраны все вызовы `mqttStopAuto()` из `switchTab` | + +### Архитектура autoTimer после фиксов +- `autoTimer` — фоновый процесс, живёт независимо от активной вкладки +- Останавливается только: явный клик "Стоп", `mqttDisconnect()`, `nav()` (уход со страницы устройства) +- При возврате на вкладку Эмулятор кнопка показывает правильный статус из `S.autoTimer` + +### E2E статус (подтверждено `233e285`) +Цепочка устройство → MQTT → bridge → Postgres → REST API работает: +`mosquitto_pub` → bridge log `forwarded IoT telemetry` → `GET /v1/.../iot/telemetry` → `{"count":1,"items":[...]}` + +### Текущий статус +- ✅ Все баги телеметрии задеплоёны +- ✅ Ветка `iot-pg-telemetry`, последний коммит `5e3c82d` +- ⏳ Merge в main — когда пользователь скажет --- diff --git a/doc/thinking/2026-04-05.md b/doc/thinking/2026-04-05.md index 9cf009b..3797cb6 100644 --- a/doc/thinking/2026-04-05.md +++ b/doc/thinking/2026-04-05.md @@ -24,3 +24,29 @@ Postgres для invocations есть, для IoT телеметрии — нет ### Результат Записан подробный план в doc/iot-mvp-plan.md — 7 шагов с файлами, кодом и YAML. + +--- + +## GitHub Copilot (Claude Sonnet 4.6) + +## Задача 1 — Задеплоить фикс switchTab (продолжение прошлой сессии) + +### Контекст +Предыдущая сессия: autoTimer убирался из switchTab, но не был задеплоен. +Файл `internal/api/ui/iot-console.html` уже изменён, нужно build+push+rollout+commit. + +### Анализ состояния кода +Проверил `switchTab` — вызовов `mqttStopAuto()` нет. Кнопка авто рендерится шаблоном +`${S.autoTimer ? 'Стоп' : 'Запустить'}` — при возврате на вкладку эмулятора DOM перерисовывается +с `emulatorTab(d)`, state `S.autoTimer` актуален → кнопка отображает правильный статус. + +### Выполнено +1. docker build --no-cache → `3838130c0f33`, tagged v0.1.59 ✅ +2. docker push → digest `sha256:f467a2c6...` ✅ +3. kubectl rollout restart → `successfully rolled out` ✅ +4. git commit `5e3c82d` "fix: autoTimer runs as background process, not killed on tab switch" ✅ +5. git push → `iot-pg-telemetry` ✅ + +### Итог +autoTimer теперь не убивается при переключении вкладок. +Останавливается только явным нажатием "Стоп", mqttDisconnect, или nav() (уход со страницы устройства).