Release dvr_admin v1.9: админ-панель с графиками CPU/RAM/диск/GPU

- Раздел "Логи" переименован в "Админ панель": canvas-графики
  в стиле Zabbix (CPU/RAM/диск/GPU, история 60 точек, обновление 3с)
- Таблица активности пользователей: онлайн-статус, последний запрос,
  счётчик запросов через after_request хук
- GPU через nvidia-smi (появляется автоматически)
- Синхронизация времени DVR с автоопределением формата XML/plain text
  и учётом локальной timezone (кнопка пока скрыта в UI)
- Колонка действий в таблице DVR: min-width 220px
This commit is contained in:
deeily 2026-04-14 02:11:05 +03:00
parent 043c4c12b4
commit ace5111a59
2 changed files with 755 additions and 437 deletions

View File

@ -4,6 +4,28 @@
Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.0.0/). Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.0.0/).
## [1.9] — 2026-04-14
### Добавлено
- **Раздел «Админ панель»** (переименован бывший «Логи»):
- **Canvas-графики CPU / RAM / Диск / GPU** в стиле Zabbix — линия с заливкой, сетка, точка текущего значения, история последних 60 точек (~3 минуты при обновлении каждые 3с)
- **GPU-метрики** (utilization + VRAM) через `nvidia-smi`, появляется автоматически если GPU обнаружен
- **Таблица активности пользователей**: индикатор online/offline, имя + роль (admin/user), когда был последний запрос, какая страница, счётчик всех запросов
- Двухколоночный layout: слева метрики, справа логи (колонки меняются местами на узких экранах)
- **Endpoint `GET /api/system/metrics`** — CPU, RAM, диск (/), GPU, активность пользователей (только админ)
- **Трекинг активности пользователей** через `after_request` хук: `{username → last_seen, last_path, req_count, is_admin}`
- **Синхронизация времени на регистраторе** (PUT `/ISAPI/System/time/localTime`) с автоопределением формата: сначала GET, затем PUT в XML или plain text в зависимости от того, что вернул DVR *(кнопка временно скрыта в UI до стабилизации)*
### Улучшено
- Колонка действий в таблице регистраторов получила `min-width:220px` — все четыре кнопки гарантированно влезают без обрезания
- `psutil` добавлен в зависимости для сбора системных метрик
### Исправлено
- Синхронизация времени: учёт локальной timezone (`datetime.now()` вместо `utcnow()`) — DVR получает корректное локальное время
- Синхронизация времени для разных моделей DVR: некоторые требуют XML, другие — plain text; теперь определяется динамически
---
## [1.8.2] — 2026-04-13 ## [1.8.2] — 2026-04-13
### Добавлено ### Добавлено

File diff suppressed because it is too large Load Diff