doc: session 2026-04-05 — autoTimer fix deploy, progress и thinking log
This commit is contained in:
+32
-1
@@ -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 — когда пользователь скажет
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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() (уход со страницы устройства).
|
||||
|
||||
Reference in New Issue
Block a user