# Системный план: мониторинг MikroTik через Telegram-бота (fetch + API) ## Архитектура и цели - **Telegram-бот** для мониторинга и управления MikroTik (работает в Docker/Portainer, Proxmox, локальная сеть) - **Два источника событий:** - fetch-скрипт MikroTik — для мгновенных алертов о новых подключениях - API (polling registration-table) — для сбора полной статистики (rx/tx bytes, uptime, отключения) - **История и статистика** хранятся в SQLite (sessions, clients) - **Управление и просмотр** через команды и инлайн-кнопки в Telegram ## Ограничения и особенности - Всё работает внутри локальной сети (нет проброса портов, Cloudflare Tunnel не нужен) - fetch-скрипт может не содержать rx/tx bytes — только алерт о событии - API даёт полную картину, но с задержкой (polling) - Возможны неучтённые данные (VPN, туннели, смена MAC, перезагрузка роутера) - SQLite выбран как оптимальный вариант для домашней/офисной нагрузки ## Структура данных (БД) - **clients** (устройства) - mac (PK) - name (host-name/comment/vendor) - custom_name (ручное имя) - last_seen - **sessions** (подключения) - id (PK) - mac (FK) - ip - start_time - end_time - rx_bytes - tx_bytes - source (fetch/api) - last_update ## Поведение - fetch-скрипт: мгновенно пишет событие о новом подключении (если нет активной сессии — создаёт) - API: периодически обновляет rx/tx bytes, uptime, фиксирует отключения (закрывает сессию) - Если клиент исчез — сессия закрывается, статистика фиксируется - Все события и статистика доступны для фильтрации и поиска ## Команды и интерфейс - [x] /history — история подключений (фильтры: день, неделя, месяц, постраничность) - [x] /clients — список устройств (сортировка по last_seen, постраничность) - [x] /stats — агрегированная статистика (топ по трафику, активности, постраничность) - [x] Инлайн-кнопки для фильтрации, навигации, обновления - [x] fetch+API: гибридная обработка событий, антидублирование, запись в SQLite - [x] Асинхронная работа, интеграция с aiogram и FastAPI - [x] Вся логика реализована для работы в локальной сети - [ ] Возможность задать кастомное имя устройству через бота - [ ] (Опционально) Экспорт истории/статистики в CSV/Excel - [ ] (Опционально) Алерты по подозрительной активности (например, новый MAC, много трафика) --- **Всё основное реализовано!** **Оставшиеся задачи:** - Возможность задавать кастомные имена устройствам через бота - (Опционально) Экспорт истории/статистики - (Опционально) Алерты по событиям **Этот документ — эталонный план для всей разработки и поддержки проекта.**