mikrotik-bot/instructions/plan_system.md

62 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Системный план: мониторинг 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, много трафика)
---
**Всё основное реализовано!**
**Оставшиеся задачи:**
- Возможность задавать кастомные имена устройствам через бота
- (Опционально) Экспорт истории/статистики
- (Опционально) Алерты по событиям
**Этот документ — эталонный план для всей разработки и поддержки проекта.**