Байпасы

Байпасы наружных теплопроводов — обводные линии, их узлы, расход и трубы.

Где найти
«Инструменты» (значок чемоданчика справа вверху) → Оборудование сети → «Байпасы». То же — палитрой команд: Ctrl+K и начните набирать название.
Права
доступно всем, кто вошёл.
Читаю как

Возможности

  • Две вкладки: «Байпасы» и «Стандартные трубы» (в скобках — число записей в базе).
  • Плитки качества данных: «Готовы», «Нет линии», «Удалённая линия», «Нет узла», «Нет расхода», «Параметры трубы». Нажатие на плитку — отбор, повторное — снять.
  • Поиск по точному ID байпаса или линии, по месту установки, коду и наименованию узлов линии и узла присоединения, по названию фрагмента. Фильтры «Качество данных», «Состояние», «Трубопровод», «Фрагмент».
  • Карточка байпаса: «Сетевая привязка», «Задание байпаса», «Параметры трубопровода», «Расчётный режим» — результат последнего сохранённого расчёта.
  • «Редактировать свойства»: регулируемый расход и его допуск, заданный напор и его допуск, состояние, трубопровод, место установки, длина, внутренний диаметр, шероховатость, сумма местных сопротивлений, стандарт и ID стандартной трубы.
  • «На карте» и кнопка-прицел в строке — переход к байпасу, если у его линии есть геометрия.
  • Вкладка «Стандартные трубы»: стандарт, DN, наружный и внутренний диаметр, стенка, площадь сечения, сколько байпасов ссылается на трубу; фильтры «Стандарт» и «Полнота паспорта». В карточке трубы блок «Все поля записи» показывает запись каталога целиком.
  • Из протокола расчёта кнопка «Исправить: Журнал байпасов» открывает этот журнал на нужном байпасе.

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

Где хранятся данные. Байпас — линия сети (linesobj) с карточкой в таблице bypass (связь по lineid), как в десктопе ТГИД. Узел присоединения — bypass.nodeid, трубопровод регулируемого узла — pipelinesignid, состояние — справочник regulatorstates («открыт», «закрыт», «неактивен»). Каталог труб — таблица standardtubes, ссылка на трубу — standardtubelink. Результат расчёта — таблица bp_out; карточка берёт последнюю по дате расчёта запись для линии байпаса.

Качество данных считает сервер, проверки идут по порядку, запись получает первую сработавшую:

Плитка Условие
«Нет линии» линии из lineid нет в linesobj
«Удалённая линия» линия помечена удалённой
«Нет узла» не задан nodeid или такого узла нет
«Нет расхода» регулируемый расход пуст или не больше 0
«Параметры трубы» длина или внутренний диаметр ≤ 0, шероховатость или сумма местных сопротивлений пусты или < 0
«Готовы» все проверки пройдены

Стандартная труба «неполная», если не заполнены стандарт, DN, наружный или внутренний диаметр или толщина стенки.

Как байпас считает расчёт. Сопротивление обводной линии (м/(т/ч)²):

S = 6,94988·10⁶ · λ′ / d⁵ · (L + d · Σζ / (λ′ · 1000)), где λ′ = 1 / (4 · (lg(3,715 · d / k))²),

d — внутренний диаметр, мм; L — длина, м; k — шероховатость, мм; Σζ — сумма местных сопротивлений. Незаполненные (ноль или пусто) значения расчёт заменяет: диаметр — 400 мм, длина — 1 м, шероховатость — 0,5 мм; о диаметре и длине пишет в протокол.

  • Задан узел присоединения и он есть в расчётной схеме — байпас держит заданный напор в этом узле на трубопроводе из поля «Трубопровод», как регулятор давления.
  • Узла нет или он не найден — байпас работает как регулятор расхода по регулируемому расходу; в протоколе «Узел регулирования байпаса […] не найден, байпас считается регулятором расхода».
  • Без узла и с нулевым заданием открытый байпас считается закрытым. «Неактивен» — постоянное сопротивление S без регулирования.

Расчёт пишет в bp_out диаметр и потерю напора диафрагмы байпаса, расход, потерю в байпасе, полную потерю напора и гидравлическое сопротивление — их показывает блок «Расчётный режим».

Плитки «Нет узла» и «Нет расхода» — проверка заполнения карточки, а не прогноз расчёта: байпас без узла расчёт всё равно считает — как регулятор расхода, а без узла и расхода открытый байпас закрывает.

Правка пишет только перечисленные поля таблицы bypass. Сервер проверяет версию строки: если запись уже изменил другой пользователь, сохранение отклоняется. Каждая правка попадает в audit_log со старыми и новыми значениями.

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

  • Смотреть журнал и каталог — любой вошедший.
  • Править — право «Оборудование» → «Свойства» в матрице прав и включённая запись (MUTATIONS_ENABLED=true). При охвате «свои» правится только оборудование своих участков и узлов. Без права кнопки «Редактировать свойства» нет.
  • Блок «Расчётный режим» заполняется после сохранённого расчёта сети, в которой есть байпас.

Шаги

  1. Откройте «Инструменты» и наберите в поиске «Байпасы» — пункт выделен рамкой.

    Пункт «Байпасы» в панели «Инструменты»

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

    Окно «Байпасы»

  3. Плашки над списком — качество данных: сколько записей готовы к расчёту, а у скольких чего-то не хватает (нет линии, линия удалена, нет узла, нет расхода, не заданы параметры трубы). Красные — критично (расчёт их не учтёт), оранжевые — требуют внимания. Нажмите плашку — список сузится до таких записей. На копии Алматы байпасов нет — список пуст («Байпасы не найдены»); когда они есть, отбор по плашке и поиск работают так же, как в других журналах оборудования.

    Байпасы: шаг 3

  4. Вкладка «Стандартные трубы» — диаметры и толщины стенок, из которых выбираются трубы байпаса.

    Байпасы: шаг 4

Примеры

Копия Алматы: таблица пуста. В bypass нет ни одной записи: список пуст («Байпасы не найдены»), над ним — предупреждения «В базе нет байпасов…» и «Результатов расчёта по байпасам ещё нет…». Вкладка «Стандартные трубы» работает: 83 трубы трёх стандартов, все с полным паспортом.

Копия Астаны: почему нет «Готовых». В bypass 465 записей, «Готовы» — 0. «Нет линии» — 133, «Удалённая линия» — 2, «Нет узла» — 330. Состояния: «открыт» — 47, «закрыт» — 418. У всех 330 байпасов с живой линией узел присоединения не задан, у 308 из них нет и регулируемого расхода. Для расчёта это значит: такой байпас — регулятор расхода с нулевым заданием, и если он открыт, расчёт его закрывает.

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

  • «В базе нет байпасов: они появятся в журнале, когда будут внесены; каталог стандартных труб — на отдельной вкладке.» — в базе города байпасов нет.
  • «Результатов расчёта по байпасам ещё нет: диаметр диафрагмы, расход и потери напора появятся после сохранения расчёта сети.» — выполните и сохраните расчёт сети.
  • В карточке «гидравлический режим для этого байпаса пока не рассчитан» — для его линии нет записи в bp_out.
  • «Не выбран или потерян узел присоединения байпасного участка.» — задайте узел, если байпас должен держать напор; без узла он работает как регулятор расхода.
  • «Регулируемый расход равен нулю или отсутствует.» — заполните «Регулируемый расход».
  • «Длина, внутренний диаметр, шероховатость или сумма местных сопротивлений имеют недопустимое значение.» — исправьте параметры в «Параметры трубопровода».
  • «Запись изменена другим пользователем — обновите карточку» — карточку изменили после открытия; нажмите «Перезагрузить объект» в уведомлении и повторите правку.
  • «Справочники не загрузились — плитки и фильтры могут быть неполными» — сервер не отдал справочники; список при этом работает, нажмите «Обновить».
  • «Не удалось загрузить байпасы», «Не удалось открыть карточку байпаса», «Не удалось загрузить стандартные трубы» — нет связи с сервером API.

Для администратора

  • Запись: MUTATIONS_ENABLED=true; право — действие «Свойства» для вида «Оборудование».
  • Таблицы десктопные: bypass, standardtubes, standards, regulatorstates, pipelinesigns, bp_out, calculation; веб их не создаёт.
  • Правки пишутся в audit_log. После правки сбрасывается кеш моделирования отключений.

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

  • Чтение: GET /api/network-bypasses/lookups, GET /api/network-bypasses/items (page, page_size, quality_status, state_id, pipeline_sign_id, fragment_id, line_id, search), GET /api/network-bypasses/items/{bypass_id}, GET /api/network-bypasses/tubes, GET /api/network-bypasses/tubes/{standard_tube_id} — routers/equipment.py, database/network_bypasses.py.
  • Правка: GET|PUT /api/v1/equipment-edit/bypass/{row_id} (поля карточки десктопа и standardtubelink, версия xmin → 409) — routers/equipment_edit.py, database/typed_edit.py.
  • Расчёт: чтение байпаса — heatnet/io/reader.py (_bypass), сопротивление — heatnet/physics/resistance.py (bypass_resistance), регулирование — heatnet/solve/regulators.py.
  • Веб: components/NetworkBypassJournalDialog.vue, services/equipmentEditService.ts, composables/useJournalEdit.ts, composables/useEquipmentSaveError.ts.
  • Тесты: API — tests/test_equipment_router.py, tests/test_equipment_edit_router.py; веб — tests/utils/equipmentEdit.spec.ts; e2e — e2e/functions/equipment-registries.spec.ts (реестры оборудования: «найдено» как в ответе API).
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо