Диагностика топологии
Диагностика топологии: разрывы, висячие узлы и другие ошибки связности сети.
Возможности
- Проверка связности одного фрагмента: восемь видов ошибок — от участка на снятый узел до геометрии, не совпадающей с узлами.
- Итог плитками: «Проблем», «Узлов», «Участков» и по одной плитке на каждый найденный вид ошибки. Числа на плитках — полные.
- Плитка вида ошибки — фильтр списка; повторное нажатие снимает его. Поиск — по номеру объекта или тексту описания.
- Щелчок по строке — карта летит к объекту и ставит метку; значок прицела в строке показывает, что координаты есть.
- «Проверить заново» (круговая стрелка в заголовке) — после правки сети.
Как это работает
Фрагмент берётся так же, как его читает расчёт: узлы с этим номером фрагмента (снятые не в счёт) и живые участки, у которых хотя бы один конец в этих узлах. Номер фрагмента у самого участка не используется — на копиях баз он бывает неверным.
Кроме участков, узел считается связанным с сетью через связи узлов (connectnodes) и через ссылку внутренней схемы (internalnodeid). Источник, потребитель, насосная и узел с заданным давлением — объекты узла.
Виды ошибок, в порядке важности для расчёта:
| Плитка | Когда ставится |
|---|---|
| Участок на снятый узел | конец участка ссылается на снятый или несуществующий узел |
| Замкнутый участок | начальный и конечный узел участка совпадают |
| Повторяющийся участок | та же пара узлов и тот же признак трубопровода (подача, обратка); первый участок пары не помечается, помечаются повторы |
| Участок между фрагментами | концы участка в разных фрагментах |
| Изолированный узел | у узла нет ни участков, ни связей, ни ссылок внутренней схемы; в описании — что на узле стоит (потребитель, источник…) |
| Часть сети без источника | связная часть из двух и более узлов, где нет ни источника, ни узла с заданным давлением; одна строка на часть, в описании — сколько в ней узлов |
| Тупиковый узел | один участок, к узлу ничего не подключено и нет внутренней схемы |
| Геометрия не у узлов | концы линии участка дальше 1 м от его узлов |
Часть сети, связанная участком или связью с узлом другого фрагмента, не считается «без источника»: питание может прийти оттуда. Такую часть расчёт тоже не посчитает, если питания нет и там, — это видно уже в протоколе расчёта.
Проверка только читает базу и ничего не сохраняет. В списке — не больше 200 строк каждого вида; если их больше, справа над списком написано «В списке — не больше 200 каждого типа; числа на плитках — полные». Координаты строки: для узла — точка узла, для участка — середина линии, а если линии нет — живой конец участка.
Проверка не запускается сама после правки сети: окно показывает результат на момент открытия.
Что нужно для работы
- Вход в систему с любой ролью, включая «Просмотр».
- Фрагмент выбирается в окне; по умолчанию — выбранный на карте или единственный видимый.
Шаги
Откройте «Инструменты» и наберите в поиске «Диагностика топологии» — пункт выделен рамкой.

Нажмите пункт — откроется окно.

Выберите фрагмент — проверка запустится сама. Нажмите плитку с видом ошибки (например, «Изолированный узел»): в списке останутся только такие ошибки. Повторное нажатие снимает фильтр.

Нажмите строку — карта перейдёт к объекту и поставит метку. Закройте окно, чтобы увидеть место на карте; после правки сети нажмите «Проверить заново» (круговая стрелка в заголовке).

Примеры
Фрагмент 74 «Маг. сети для расчёта НС» (копия базы Алматы): 2028 узлов, 2018 участков, проблем 39.
- «Изолированный узел» — 22. Часть из них — узлы потребителей без участков: описание «Нет участков и связей (потребитель)». Такой потребитель в расчёт не попадёт.
- «Тупиковый узел» — 13: «Один участок, к узлу ничего не подключено». Чаще всего это недорисованный отвод.
- «Часть сети без источника» — 1: «2 узлов без источника и заданного давления (узел 534872 и связанные с ним)». Узел 534872 одновременно стоит в списке тупиковых — это короткий отрезок, оторванный от магистрали.
- «Участок на снятый узел» — 1: участок 326381, «узел 535695 снят (removed)»; «Повторяющийся участок» — 1: участок 324095 повторяет участок 326258; «Геометрия не у узлов» — 1.
Для сравнения, копия этой же магистрали — фрагмент 99: 2044 узла, 2026 участков, проблем 48 (из них «Геометрия не у узлов» — 7).
Если не получается
- Строка не переводит карту — у объекта нет координат, появится предупреждение «у объекта нет координат».
- Цифры не изменились после правки — нажмите «Проверить заново»: проверка не повторяется сама.
- «Ошибок топологии не найдено» и под ним «Узлов N, участков M — связность в порядке» — проблем нет. Если N и M равны нулю, у фрагмента нет живых узлов: проверьте номер фрагмента.
- «Не удалось выполнить диагностику» с текстом «Фрагмент … не найден» — фрагмент снят или удалён; обновите страницу, чтобы список фрагментов перечитался.
- Описания строк на английском и казахском интерфейсе остаются по-русски — их пишет сервер.
Для разработчика
- API:
GET /api/v1/topology/diagnostics?fragment_id=&limit=(limit1–2000, по умолчанию 200; 404 — фрагмента нет). Ответ:nodes,lines,countsпо типам,total,truncated,faults(type,object_type,object_id,description,lat,lng,related_ids). Код —database/topology_diagnostics.py, маршрут —routers/topology.py. - Веб:
components/TopologyDiagnosticsModal.vue(ключtopologyDiagnostics, перелёт — событиеlocate-fault), подписи, цвета и значки видов —utils/topologyDiagnostics.ts(там же правила проверки после правки:node_type_conflict,unsnapped_end,no_supply). - Тесты:
tests/components/TopologyDiagnosticsModal.spec.ts,tests/utils/topologyDiagnostics.spec.ts; API —tests/test_topology_diagnostics.py.
