Запорная арматура
Запорная и регулирующая арматура: задвижки и затворы сети, их назначение, диаметр и состояние, каталог типоразмеров.
Возможности
- Вкладки «Оборудование» и «Каталог задвижек» (в скобках — число записей). В одном списке — задвижки и регулирующая арматура. В подзаголовке окна — «… · найдено N · готовы X из Y»: сколько записей нашлось и сколько из всех готовы.
- Плитки качества привязки: «Готовы», «Нет линии», «Удалённая линия», «Неизвестное назначение», «Диаметр под вопросом». Нажатие на плитку — отбор, повторное — снять.
- Поиск по названию, назначению, марке из каталога, коду и наименованию узлов линии, фрагменту, а также по точному ID арматуры или линии. Фильтры «Тип оборудования», «Качество привязки», «Состояние», «Фрагмент», «Назначение».
- Карточка: «Сетевая привязка» (линия, начальный и конечный узлы, фрагмент), «Исходные параметры», «Паспорт модели» (если задвижка связана с каталогом), «Последний расчётный режим».
- «Редактировать свойства»: назначение, состояние (открыта, закрыта, частично открыта), условный диаметр, степень открытия, относительная утечка, число оборотов, управление затвором; у регулирующей арматуры ещё заданный перепад и заданный расход.
- Переход к арматуре на карте, если у её линии есть геометрия.
- Карточка модели каталога: марка, DN, давление, температура, присоединение, привод, материал, масса, изготовитель и задвижки этой модели.
Как это работает
Где хранятся данные. Арматура в базе ТГИД — линия сети (linesobj) с карточкой в таблице своего вида: задвижки — dampers, регулирующая арматура — regularmatures (связь по lineid). Задвижки и регулирующая арматура нумеруются независимо, поэтому ID может совпасть. Состояние — справочник damperarmaturestates. «Назначение» — у задвижки поле «Место установки» десктопа (dispatcherswitch), у регулирующей арматуры — «Вид арматуры» (regarmtype). Каталог задвижек — standarddampers, ссылка задвижки на модель — standarddamplink (0 — не связана). У регулирующей арматуры ссылки на каталог нет.
Качество привязки определяется по порядку:
| Статус | Условие |
|---|---|
| «Нет линии» | линии с таким id нет |
| «Удалённая линия» | линия помечена удалённой |
| «Неизвестное назначение» | назначение пустое или «?» |
| «Диаметр под вопросом» | условный диаметр пуст, не больше 0 или больше 5000 мм |
| «Готовы» | всё в порядке |
Модель каталога «полная», если заполнены марка, DN, давление и температура.
Что берёт расчёт. Движок расчёта читает состояние, условный диаметр и степень открытия:
- «закрыта» — линия в расчётную схему не входит;
- «открыта» — коэффициент сопротивления ζ = 0,35;
- «частично открыта» — ζ по степени открытия ступенями: до 10 % — 1300, 50 % — 6,55, 90 % — 1,0, от 100 % — 0,35;
- сопротивление S = 10 / Kv², где Kv = 5,04 · F / √ζ, F = π/4 · (DN² / 100) · 0,95; при диаметре 0 сопротивление практически нулевое.
У регулирующей арматуры диаметр по умолчанию — 1000 мм; «Заданный перепад» в расчёте даёт постоянную потерю напора на этой линии.
Трассировка и локализация. Закрытая задвижка на участке основной схемы — постоянный барьер: вода через неё не проходит ни при трассировке, ни при поиске отключаемых потребителей. Закрытые задвижки внутренних схем узлов постоянным барьером не служат. Если в трассировке «Связанные» или «Зона» включена остановка на «Задвижки», обход останавливается на любом участке с задвижкой и на узле, во внутренней схеме которого есть задвижка, — открытой или закрытой. Регулирующая арматура в трассировке не учитывается.
Результат расчёта. «Последний расчётный режим» — последняя по дате строка zd_out (задвижки) или zd2_out (регулирующая арматура) по линии: состояние, расход, потеря напора, сопротивление, напоры в конце.
Координаты. Точка линии, а для арматуры внутренней схемы — точка узла-владельца. У линий расчётной схемы без геометрии координат нет; сколько записей можно показать на карте, пишет плашка над списком.
Правка. Сохраняются только изменённые поля, с проверкой версии строки. Изменение пишется в журнал правок, кеш графа для трассировки и локализации отключений сбрасывается — новые закрытые задвижки учитываются сразу. Связь задвижки с моделью каталога в окне не меняется.
Что нужно для работы
- Смотреть — любой вошедший.
- Править — право «Оборудование» → «Свойства» (при охвате «свои» — только арматура на участках, созданных этим пользователем) и включённая запись (
MUTATIONS_ENABLED=true). Без этого кнопки «Редактировать свойства» нет. Пользователю-роли PostgreSQL это право даёт предметное право «Правка гидравлической сети (режимы)». - Для «Последнего расчётного режима» — сохранённый расчёт сети.
Шаги
Откройте «Инструменты» и наберите в поиске «Запорная арматура» — пункт выделен рамкой.

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

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

В списке остались только записи с этой проблемой. Поиск (назначение, узел, линия или ID) и фильтры «Тип оборудования», «Качество привязки», «Состояние», «Фрагмент», «Назначение» работают вместе с отбором; «Сбросить» снимает всё, «Обновить» перечитывает журнал.

Кнопка с карточкой в строке открывает арматуру: линия, назначение, диаметр и состояние. Закрытые задвижки учитывает трассировка и локализация аварий.

Вкладка «Каталог задвижек» — типоразмеры арматуры.

Примеры
Копия Алматы: что в журнале. 14 939 задвижек, регулирующей арматуры нет. «Готовы» — 11 823, «Нет линии» — 2456, «Удалённая линия» — 272, «Неизвестное назначение» — 388, «Диаметр под вопросом» — 0. Открыто 14 925, закрыто 14. Координаты есть у 478 задвижек: остальные стоят на линиях расчётной схемы без геометрии или потеряли линию. Самые частые назначения: «Вход ТП» и «Выход ТП» — по 3605, «Вход СО» — 3406, «ОткрГВ подача» — 3399, «Секционирующая» — 52.
Там же: какие задвижки закрыты. Из 14 закрытых 12 стоят на удалённых линиях. На действующих — две секционирующие во фрагменте «Магистральные сети АлЭС (ЦЭР-ВЭР-ЗЭР-СЭР)»: №34 (линия 2172, 1-12А — 1-13А, DN 700) и №42 (линия 2180, 1-юк-10 — 1-юк-9, DN 518). Эти две линии трассировка всегда считает барьерами.
Сопротивление задвижки DN 700. F = 0,7854 · 4900 · 0,95 ≈ 3656. Открытая (ζ = 0,35): Kv ≈ 31 146, S ≈ 1,03·10⁻⁸. Открытая на 50 % (ζ = 6,55): Kv ≈ 7200, S ≈ 1,93·10⁻⁷ — почти в 19 раз больше.
Каталог. В копии Алматы 6 моделей 30ч47бр (DN 50…200, давление 101,93, до 200 °C, ручной привод), ни одна задвижка с ними не связана. В копии Астаны те же 6 моделей и 47 связанных задвижек из 66 385.
Если не получается
- «Результатов расчёта по арматуре ещё нет: паспортные параметры видны уже сейчас, расход, потеря напора и сопротивление появятся после сохранения расчёта сети.» — в базе нет сохранённых расчётов.
- «Не удалось загрузить арматуру» — нет связи с сервером; нажмите «Повторить».
- «Связанная линия отсутствует: сетевой контекст и позиционирование недоступны.» — запись ссылается на несуществующую линию; исправить можно только в десктопе.
- «Связанная линия помечена удалённой и исключена из активной расчётной схемы.»
- «Назначение не задано (в исходных данных «?») и требует уточнения.» — заполните «Назначение» в правке.
- «Условный диаметр равен нулю или выходит за ожидаемый диапазон.» — проверьте «Условный диаметр».
- «Паспортная модель не выбрана: задвижка не связана с моделью каталога.» — у задвижки нет ссылки на каталог; на расчёт это не влияет. У регулирующей арматуры каталога нет, и этой плашки у неё не бывает.
- «Ни одна установленная задвижка базы не связана с этой моделью.» — в карточке модели каталога, если с ней не связана ни одна задвижка.
- «Объект изменён другим пользователем — перезагрузите карточку и повторите правку.» — запись изменили после того, как вы открыли правку.
- «Нет права «Свойства: оборудование (свои)»» — у роли нет права на правку оборудования.
Для администратора
- Запись:
MUTATIONS_ENABLED=true, право «Оборудование» → «Свойства»; приAUTH_BACKEND=pgокончательно права проверяет база. - Таблицы десктопные (
dampers,regularmatures,damperarmaturestates,standarddampers,zd_out,zd2_out); веб их не создаёт. - Правка пишется в
audit_log(UPDATE, старые и новые значения).
Для разработчика
- Чтение:
GET /api/network-armatures/lookups,GET /api/network-armatures/items(page,page_sizeдо 200,equipment_type:damper|regulating,quality_status:ready|line_missing|line_removed|purpose_unknown|diameter_suspicious,state_id,fragment_id,purpose,line_id,search),GET /api/network-armatures/items/{equipment_type}/{id},GET /api/network-armatures/catalog,GET /api/network-armatures/catalog/{id}—routers/equipment.py,database/network_armatures.py. Подзаголовок —counts.readyизcounts.total; плашка «Паспортная модель не выбрана» — только приequipment_type === 'damper'без модели, «Ни одна установленная задвижка…» — приinstalled_count= 0. - Правка:
GET|PUT /api/v1/equipment-edit/dampers/{id}и…/regularmatures/{id}—routers/equipment_edit.py(дополнительное полеqу регулирующей арматуры),database/typed_edit.py. - Расчёт:
heatnet/physics/resistance.py(damper_resistance,ksi),heatnet/io/reader.py. Трассировка:database/outage_simulation.py(граф,normally_closed_lines),database/network_trace.py. - Веб:
components/NetworkArmatureJournalDialog.vue(ключnetworkArmature),services/equipmentEditService.ts. - Тесты: API —
tests/test_equipment_router.py,tests/test_equipment_edit_router.py,tests/test_network_trace.py,tests/test_outage_simulation.py; веб —tests/utils/equipmentEdit.spec.ts; e2e —e2e/functions/equipment-registries.spec.ts.
