From dd470f337dd54d0225fd9a55034c8b71d19e50bd Mon Sep 17 00:00:00 2001 From: bilal Date: Wed, 24 Jun 2026 12:53:08 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20Promt.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Promt.md | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/Promt.md b/Promt.md index b8c6151..b56ddc4 100644 --- a/Promt.md +++ b/Promt.md @@ -1 +1,34 @@ -место для текста промта \ No newline at end of file +Контекст и задача: +Мне нужно разработать 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, обработкой исключений (чтобы падение одного роутера не ломало весь сбор) и подробными комментариями на русском языке. + \ No newline at end of file