284794ec8d
Made-with: Cursor
3.1 KiB
3.1 KiB
Техническое задание (v1)
Цель
Создать кроссплатформенное веб-приложение на Go для:
- обнаружения устройств в сети;
- базовой идентификации устройств;
- получения LLDP-соседей;
- построения карты связей между устройствами.
Платформы и запуск
- Backend: Go 1.22+
- ОС: Linux и Windows
- Запуск: стандартными средствами (без Docker)
- Reverse proxy: Nginx (Linux) или IIS (Windows, опционально)
Функциональные требования v1
- ручной запуск скана по заданным CIDR;
- ping sweep по диапазонам;
- проверка базовых TCP-портов (
22, 80, 443, 161); - SNMP v2c:
sysName,sysDescr,sysObjectID; - сбор LLDP соседей по SNMP;
- сохранение результатов скана в БД;
- построение графа связей устройств;
- история сканов и сравнение изменений.
Нефункциональные требования
- кроссплатформенная сборка (Linux/Windows);
- устойчивость к частичным ошибкам в сети;
- конфигурируемые таймауты и параллелизм;
- разграничение прав (
admin,viewer); - логирование ошибок и действий.
Архитектура
cmd/server— запуск HTTP APIinternal/api— обработчики и роутыinternal/scans— логика создания/ведения scan jobsinternal/scanner/*— ping, ports, snmp, lldp (поэтапно)internal/store— PostgreSQL-репозиторийweb— интерфейс (следующий этап)
Минимальные API
GET /healthPOST /api/scansGET /api/scans/{id}GET /api/topologyGET /api/topology/diff?from=&to=
Модель данных (минимум)
userssnmp_credentialsscan_jobsdevicesopen_portslldp_neighborslinks
SNMP OID минимум
1.3.6.1.2.1.1.5.0(sysName)1.3.6.1.2.1.1.1.0(sysDescr)1.3.6.1.2.1.1.2.0(sysObjectID)1.0.8802.1.1.2.1.4.1.1.5(lldpRemChassisId)1.0.8802.1.1.2.1.4.1.1.7(lldpRemPortId)1.0.8802.1.1.2.1.4.1.1.9(lldpRemSysName)
Этапы
- Каркас API и scan jobs
- PostgreSQL и миграции
- Ping + port scan
- SNMP system + LLDP
- Граф топологии в UI
- История и diff
Критерии приемки v1
- скан по CIDR создается и завершается;
- живые узлы фиксируются в результатах;
- SNMP-доступные устройства читаются;
- LLDP-связи строятся минимум на тестовой сети;
- топология отображается в интерфейсе;
- приложение запускается на Linux и Windows.