14 lines
1.8 KiB
Markdown
14 lines
1.8 KiB
Markdown
# План: 007 — быстрое обнаружение недоступности устройств
|
||||
|
|
|
|||
|
|
## Контекст
|
|||
|
|
Раньше опроса по расписанию не было: статус обновлялся только по действию пользователя, а недоступное (не отвечающее) устройство определялось по общему таймауту 30 с.
|
|||
|
|
|
|||
|
|
## Решение (согласовано: оба пункта, интервал 30 с)
|
|||
|
|
1. **Раздельные таймауты**: соединение — 4 с (`ROS_CONNECT_TIMEOUT`), чтение — 30 с (долгие операции не затронуты).
|
|||
|
|
2. **Фоновый опрос** каждые 30 с (`POLL_INTERVAL`, 0 — выключить): параллельно, не более `MAX_CONCURRENCY`.
|
|||
|
|
- Лёгкий опрос (один запрос `system/resource`): online/offline, uptime, версия ROS.
|
|||
|
|
- Полный опрос: если устройство было offline или не опрошено (версии могли измениться), и раз в `UPDATE_CHECK_INTERVAL` (30 мин) — с проверкой обновлений.
|
|||
|
|
3. **UI**: таблица и счётчики в заголовке обновляются сами каждые 15 с (только чтение БД); пауза при выбранных строках, открытом меню/окне, фокусе в фильтрах и скрытой вкладке; история браузера не засоряется.
|
|||
|
|
|
|||
|
|
## Шаги
|
|||
|
|
Клиент RouterOS (connect-таймаут) → `ops.poll_device` → `services/poller.py` и запуск в `lifespan` → автообновление в `app.js` (OOB-подзаголовок) → тест, README, итоги.
|