UI: explain scan pipeline, live status line, device table; README scan logic.

Made-with: Cursor
This commit is contained in:
Луценко Андрей Анатольевич
2026-04-10 13:01:17 +10:00
parent 659b76f1cf
commit 204b4f8768
2 changed files with 199 additions and 35 deletions
+14
View File
@@ -80,6 +80,20 @@ http://localhost:8080/
По умолчанию используется `STORE_BACKEND=memory`.
SNMP-проверка по умолчанию включена (`SNMP_ENABLED=true`, community `public`).
## Логика одного scan (что делает программа)
Один запуск scan — это **одна фоновая задача** (`runner`), без отдельных фаз «только ping» / «только LLDP» в API.
1. По полю `cidrs` строится список IP (с учётом `exclude_ips`).
2. Параллельно (ограничение `max_parallel_hosts`) для каждого IP:
- **ping** (ICMP через системную утилиту `ping`);
- если хост «вверх» и включён port-scan — проверка **TCP-портов** из `options.ports`;
- если хост «вверх» и `SNMP_ENABLED=true`**SNMP v2c** (sysName, sysDescr, sysObjectID) и сразу **обход LLDP-MIB** (соседи, локальный/удалённый порт и т.д.). Это не отдельная кнопка: LLDP выполняется в том же проходе, что и базовый SNMP.
3. Статус задачи: `queued``running` (поле `progress` 0…100, `stats.hosts_total` / `stats.hosts_up`) → `done` или `failed`.
4. Результаты читаются через API: `/hosts`, `/ports`, `/snmp`, `/lldp`, агрегированный граф — `/topology`.
В веб-UI после **«Создать scan и ждать»** опрашивается статус, показывается расшифровка в строке состояния, по завершении обновляется таблица **найденных устройств** (ping + SNMP) и строится граф по кнопке **«Загрузить»** (или автоматически после ожидания).
## PostgreSQL без Docker
### Вариант A: macOS (Homebrew)