RiX Monitoring (RDS Dashboard)

Веб-дашборд для мониторинга ATM через RDS: авторизация, получение телеметрии/статусов, агрегация по “холат/status”, аналитические экраны (Monitoring/Cash) и удобный UI для LAN.

Python FastAPI + Jinja2 Templates Uvicorn (ASGI) requests (HTTP-клиент к RDS) Chart.js (графики) Bootstrap (UI)
Контекст эксплуатации
  • Система ориентирована на работу в корпоративной сети (LAN) с доступом к внутреннему RDS endpoint (base_url).
  • Поддержка режимов авторизации: none/basic/commander (авто-подбор при частых ошибках).
  • Работа со множеством терминалов: режим “all/*” (обнаружение терминалов) и постраничная загрузка (offset/limit).
Проблема
  • RDS’dan keladigan telemetriya/statuslarni tez ko‘rib chiqish va muammoli ATMlarni topish kerak.
  • Ko‘p terminal bo‘lsa, UI sekinlashmasligi va tarmoqni “bosib yubormasligi” kerak.
  • LAN muhitida monitoring/cash tahlilini bitta dasha jamlash zarur.
Решение
  • FastAPI + Jinja2 asosida yengil web-dash, RDS API bilan requests orqali integratsiya.
  • All/* discovery va offset/limit pagination — katta parkda masshtablash.
  • Monitoring/Cash ekranlari, Chart.js diagrammalar, auto refresh va filtrlar.
Результат
  • Muammoli ATMlarni tez topish va status taqsimotini real vaqtga yaqin ko‘rish.
  • Katta ro‘yxatlar bilan ishlashda barqaror UX (sahifalab yuklash).
  • Cash holatini tahlil qilish va CSV eksport orqali ulashish.

Глубокий разбор

Сжато и по делу: что делает система и почему это важно.

Назначение и ценность

RiX Monitoring — это веб-интерфейс для оперативного мониторинга ATM, когда данные доступны через RDS (внутренний сервис).

Фокус: быстро найти проблемные устройства, увидеть распределение статусов, и удобно анализировать “Naqd pul” (остатки наличных) в одном месте.

Ключевые экраны (UI/UX)

**Dashboard**
- Поиск и фильтры по состояниям (online/offline/down и др.)
- Карточка выбранного ATM: основные модули (Cash/Printer/CDM/Sensors), SLA-блоки, XFS детали
- “Muammo tahlili”: сводный анализ проблем и список issues

**Monitoring**
- Сводка по всему парку: статусы/холат, кликабельные фильтры
- Диаграмма распределения (Chart.js), top статусы
- Автообновление (auto refresh), compact/expanded режим

**Cash**
- Таблица наличных: сортировки, фильтры (lowcash/online/offline/down)
- Экспорт CSV
- Переход в Dashboard по клику на строку

Технический разбор: интеграция с RDS

**RDS Client**: запросы к RDS API выполняются через HTTP-клиент (requests), base_url задаётся через переменные окружения.

**Сессии**: после логина создаётся session-id (cookie), в памяти держится `SessionState` (клиент и список terminal_ids).

**Парсинг данных**: входные структуры RDS нормализуются/агрегируются (например, summary по terminal, выделение holat/status, возраст событий).

**Масштабирование по количеству ATM**: постраничные API (`offset/limit`) и динамическая подгрузка в UI уменьшают нагрузку на браузер и сеть.

Безопасность и эксплуатация в LAN

В LAN ключевые практики: ограничение доступа на уровне сети, защита учётных данных и ясный контроль сессий.

Рекомендуемые улучшения (если требуется “строго offline”):
- не использовать CDN как единственный источник (Bootstrap/Chart.js хранить локально),
- настроить TLS внутри периметра (если требуется),
- добавить аудит логинов и TTL для сессий в памяти (очистка старых).

Производительность и UX для больших списков

Система рассчитана на большие списки терминалов: UI использует поиск/фильтры, а данные подгружаются порциями.

Для мониторинга в реальном времени применяется auto refresh с аккуратным обновлением снапшота (без “дёрганья” интерфейса).