Проверка после правки

После каждой операции редактора сервер проверяет связность изменённого места: висячие участки, узлы без питания, дубли, непривязанные концы. Замечания появляются в панели над картой, пока правку ещё можно отменить.

Где найти
редактор сети: кнопка «Редактировать топологию сети» (значок ломаной с карандашом) в строке режимов над картой: панель «Проверка правки» открывается сама после записи трассы, разреза, слияния, удаления и других операций.
Права
та же, что для правки сети: проверка смотрит только свои операции пользователя.
Функция показана в сквозном сценарии:Правка сети с проверкой и откатом
Читаю как

Возможности

  • Проверка изменённого места сразу после каждой операции редактора: трассы, нового узла, переноса, изломов, разреза, слияния, разворота, удаления, смены типа.
  • Панель «Проверка правки» над картой: число замечаний и до шести пунктов; остальные — «Ещё N — в «Диагностике топологии» фрагмента».
  • Щелчок по пункту — карта переходит к узлу или участку замечания.
  • «Отменить правку» — отмена проверенной операции прямо из панели; крестик «Скрыть проверку правки» — оставить правку как есть.

Как это работает

Что проверяется. Сервер берёт из журнала отмены узлы и участки операции, концы её участков и всё, что к ним примыкает (до 500 объектов), и прогоняет правила:

  • ошибки — расчёт не пойдёт или пойдёт неверно: участок ссылается на снятый или несуществующий узел, начальный и конечный узлы участка совпадают, узел сразу в нескольких таблицах типа (потребитель, источник, насосная);
  • предупреждения — подозрительно: повторяющийся участок (та же пара узлов и признак), конец трубы ближе 1 м к сети, но не привязан к ней, узел без участков и связей, концы участка в разных фрагментах, концы геометрии дальше 1 м от узлов, узлы без питания.

Узлы без питания. Ищутся по графу сети от питающих точек — источников тепла и узлов с заданным напором — с учётом закрытых задвижек; каждая операция редактора сбрасывает кеш графа. Новая трасса в пустом месте всегда даёт это замечание: она ещё не соединена с сетью.

Ничего не запрещает. Проверка только читает базу. Замечания — предупреждения: правка уже сохранена («Правка сохранена; замечания не мешают работе»). Десктоп правит ту же базу без этих правил, поэтому они не встроены в схему как ограничения. Правило «пара подающий/обратный» сознательно не включено: в Алматы у подачи и обратки разные узлы, это норма данных.

Когда панели нет. Если замечаний нет, панель не появляется. Проверка запрашивается для вашей последней операции, когда веб узнаёт о ней (после записи, отмены и повтора).

Что нужно для работы

  • Любое право на правку сети (как для редактора). Проверка доступна и при выключенных флагах записи, но без записи проверять нечего.
  • Журнал отмены (topology_undo_log) в базе города: область операции берётся из него.

Шаги

  1. Нарисуйте и создайте трассу. Над картой откроется панель «Проверка правки» с числом предупреждений и списком замечаний. Новая трасса в пустом месте не соединена с источником, поэтому здесь замечание «Узлы без питания».

    Проверка после правки: шаг 1

  2. Щёлкните замечание — карта перейдёт к узлу или участку, о котором оно.

    Проверка после правки: шаг 2

  3. Правка оказалась ошибочной — «Отменить правку» в панели: отменяется именно проверенная операция, уведомление «Отменено», объекты пропадают с карты. Если правка верна, закройте панель крестиком «Скрыть проверку правки».

    Проверка после правки: шаг 3

Примеры

На копии базы Алматы после трассы из двух точек в пустом месте фрагмента 74 (участок 124,04 м, два новых узла): «Проверка правки: 1 предупреждение — Узлы без питания: узел #…; часть сети без питания: 2 узла (узел … и связанные с ним)». Панель e2e-теста и ответ API для той же операции совпали по числу и тексту пунктов.

Если не получается

  • Панель не появилась — замечаний нет: при чистой правке панель не показывается.
  • «Отменить правку» отвечает, что объекты изменены, — после правки их уже поменяли (вы, другой пользователь или десктоп). Отменяйте по истории правок или правьте вручную.
  • Замечание «узлы без питания» у правки внутри существующей сети — проверьте, не закрыта ли задвижка выше по течению и подключён ли участок к узлу, а не просто доведён до него (тогда будет и «непривязанный конец»).
  • «Отменить правку» отказывает — после правки её объекты уже изменили. Отмените более поздние правки или исправьте вручную.

Для разработчика

  • GET /api/v1/topology/operations/{operation_id}/check → {operation_id, total, issues: [{rule, severity, …, coords}]}; 404 — операции нет в журнале. POST /api/v1/topology/check-area {node_ids, line_ids} — те же правила для произвольной области (до 500 узлов и 500 участков).
  • Сервер: database/topology_rules.py (check_area, operation_area, правила dangling_line, zero_length_line, duplicate_line, node_type_conflict, cross_fragment_line, geometry_mismatch, unsnapped_end, orphaned_node, no_supply); граф питания — database/outage_simulation.py.
  • Веб: components/TopologyCheckPanel.vue (SHOWN_LIMIT = 6), запрос — checkNewOperation в composables/useTopologyEditor.ts, подписи правил — utils/topologyDiagnostics.ts.
  • Тесты: API tests/test_topology_rules.py, веб tests/utils/topologyDiagnostics.spec.ts; e2e — второй тест e2e/functions/network-editor.spec.ts сверяет панель с ответом API.
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо