Обновить Promt.md
This commit is contained in:
35
Promt.md
35
Promt.md
@@ -1 +1,34 @@
|
|||||||
место для текста промта
|
Контекст и задача:
|
||||||
|
Мне нужно разработать self-hosted веб-приложение для мониторинга и динамической визуализации топологии домашней сети и устройств умного дома. Сеть состоит из разнородного оборудования (гетерогенная среда): роутер Asus, точки доступа MikroTik и Ubiquiti, домашний Linux-сервер с Docker-контейнерами, а также IoT-устройства (Zigbee и Matter), заведенные в Home Assistant.
|
||||||
|
|
||||||
|
Главная цель приложения — опрашивать все эти системы, приводить данные к единому формату "Узлы (Nodes)" и "Связи (Edges)" и отрисовывать интерактивную живую карту сети, где толщина линий зависит от текущего сетевого трафика на интерфейсах.
|
||||||
|
|
||||||
|
Архитектура системы:
|
||||||
|
1. Backend (Python / FastAPI): Скрипт-коллектор, который по расписанию (раз в 30-60 секунд) собирает данные из источников. Должен иметь эндпоинт `/api/topology`, отдающий JSON для фронтенда.
|
||||||
|
2. База данных (Redis/SQLite): Для кэширования последнего состояния сети, чтобы не перегружать роутеры частыми запросами при обновлении страницы пользователем.
|
||||||
|
3. Frontend (HTML5 / JS): Одна страница с использованием библиотеки vis.js (или Cytoscape.js), которая запрашивает JSON и строит граф с поддержкой физики.
|
||||||
|
|
||||||
|
Требования к модулям сбора данных (Бэкенд):
|
||||||
|
- Модуль Роутеров (Asus, MikroTik, Ubiquiti): Реализуй абстрактный класс или универсальный метод сбора данных через SNMPv2/v3 (используя библиотеку pysnmp или аналоги). Нужно собирать: список подключенных MAC-адресов по интерфейсам/портам и текущую утилизацию трафика (In/Out octets) на этих интерфейсах. Для MikroTik дополнительно предусмотри альтернативный сбор Wi-Fi клиентов через RouterOS v7 REST API.
|
||||||
|
- Модуль Docker: Используй официальный docker-py. Собирай список запущенных контейнеров, их ID, статус (running/stopped) и связывай их с "родительским" узлом — домашним сервером.
|
||||||
|
- Модуль Умного дома (Zigbee/Matter): Реализуй интеграцию с Home Assistant REST API. Скрипт должен запрашивать состояние объектов (`/api/states`), фильтровать устройства умного дома (например, по признаку интеграции zha или zigbee2mqtt в атрибутах) и привязывать их к узлу "Home Assistant".
|
||||||
|
|
||||||
|
Требования к структуре данных (JSON вывода):
|
||||||
|
Выходной JSON должен строго соответствовать формату для vis.js:
|
||||||
|
{
|
||||||
|
"nodes": [
|
||||||
|
{"id": "уникальный_ключ", "label": "Имя устройства (или IP/MAC)", "group": "категория_для_стилей", "status": "online/offline"}
|
||||||
|
],
|
||||||
|
"edges": [
|
||||||
|
{"from": "id_источника", "to": "id_приемника", "label": "Метрика трафика (например, 45 Mbps)", "value": "число_для_толщины_линии"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
Что нужно сгенерировать:
|
||||||
|
1. Чистую архитектуру проекта (структуру файлов).
|
||||||
|
2. Полный рабочий код бэкенда на FastAPI с реализацией вышеописанных модулей сбора данных (с заглушками под реальные IP/токены).
|
||||||
|
3. Пример фронтенд-страницы (index.html), которая раз в 10 секунд запрашивает бэкенд и плавно обновляет граф без перезагрузки страницы.
|
||||||
|
4. Docker-compose файл для быстрого деплоя всей системы (FastAPI + Redis + Frontend) в одну команду.
|
||||||
|
|
||||||
|
Пиши код с соблюдением принципов SOLID, обработкой исключений (чтобы падение одного роутера не ломало весь сбор) и подробными комментариями на русском языке.
|
||||||
|
|
||||||
Reference in New Issue
Block a user