Групповые установщики
Групповые установщики: «поле = значение» сразу для фрагмента, выделения или фильтра — как aSet в десктопе.
Возможности
- 33 установщика в семи группах, как пункты «Область» десктопа: «Потребители» (ФИО техников, коды расчётных температур и удельных расходов, коэффициенты вариации, коэффициент смешения элеватора, удельные объёмы систем, тепловой пункт, автоматизация, признак записи диаметров шайб), «Потребители: открытая ГВС» (4 установщика), «Участки теплопроводов» (диаметр по сортаменту ГОСТ, доля местных потерь, часы работы, Kv, коэффициенты тепловых испытаний, признак ремонта, тип прокладки, шероховатость, три даты, длины по геометрии), «Участки ПТС» (назначить участок МС или РС, снять привязку), «Линейные объекты» (организация-владелец), «Узлы» (код расчётной схемы), «Надписи» (показывать или скрывать надписи узлов и линейных объектов).
- «2. Для каких объектов»: «Фрагмент» — все объекты выбранных фрагментов; «Выбрать на карте» — окно сворачивается, вы отмечаете узлы потребителей или участки, «Готово» возвращает к окну; «Фильтр» — фрагменты (необязательно), «Только в видимой области карты» и условия по полям «равно», «не заполнено», «заполнено».
- «Предпросмотр» — без записи: «Объектов: … · изменится строк: …», по таблицам «изменится из стольких», первые 200 изменений «было → станет» с названием объекта.
- «Применить» — после подтверждения; итог «изменено N строк» и номер группы изменений для «Истории правок».
- «Отменить операцию» — возвращает прежние значения этой операции.
Как это работает
Откуда объекты. Набор собирается из таблицы узлов (nodes) или линейных объектов (linesobj), снятые объекты (removed) не входят. Для установщиков потребителей в набор попадают узлы, у которых есть реальный (realconsumers) или обобщённый (generalizedconsumers) потребитель; для установщиков участков — линии с паспортом трубы (heatpipesections). За одну операцию — не больше 50 000 объектов.
Что пишется. Под выбранным установщиком окно показывает, в какие поля идёт значение. Установщики потребителей пишут и в реальных, и в обобщённых потребителей, как десктоп. Связанные поля пишутся вместе: дата ввода в эксплуатацию — ещё и в дату последней перекладки; участок МС — с очисткой участка РС, и наоборот; диаметр по сортаменту — условный, наружный, внутренний диаметры и толщина стенки. «Установить длины по геометрии» считает длину каждого участка в метрах на земле, участки без геометрии не меняются. Значения из справочников (коды температур, удельных расходов, Kv, кода расчётной схемы) предлагаются из записей выбранных фрагментов.
Проверки. Число проверяется по допустимому диапазону установщика: например, шероховатость — от 0 до 10 мм, коэффициент смешения — от 0 до 20. У 19 установщиков, чьё поле участвует в расчёте, окно предупреждает «Поле участвует в гидравлическом расчёте — после изменения пересчитайте режим».
Запись. «Применить» передаёт серверу число изменений из предпросмотра. Если с тех пор данные поменялись, запись отклоняется — повторите предпросмотр. Запись идёт одной транзакцией; каждая изменённая строка и сводная запись операции пишутся в audit_log с общей группой изменений. После записи сбрасывается кеш моделирования отключений.
Отмена. «Отменить операцию» сначала считает без записи, сколько строк можно вернуть, и спрашивает подтверждение. Строки, которые правили после операции, остаются как есть — их число окно называет. Повторная отмена той же операции не выполняется: «Операция уже отменена».
Что нужно для работы
- Пункт в «Инструментах» виден тому, у кого в матрице прав есть право «Свойства» хоть каких-то объектов.
- Предпросмотр и запись: сервер требует охват «все» в праве «Свойства» того вида объектов, который меняет установщик: потребители — «Потребители», участки и линейные объекты — «Участки», узлы — «Узлы». Иначе — «Групповая установка — нужно право …».
- Запись и отмена — при включённой записи на сервере (
MUTATIONS_ENABLED=true). Без права на правку сети окно показывает пояснение, а «Применить» и «Отменить операцию» неактивны.
Шаги
Откройте «Инструменты» и наберите в поиске «Групповые установщики» — пункт выделен рамкой.

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

«1. Что установить» — выберите установщик (на снимке — «Установить эквивалентную шероховатость»); под ним — куда пишется значение, ниже — новое значение. «2. Для каких объектов»: весь фрагмент, выбор на карте или фильтр по полям. «Предпросмотр» ничего не записывает: показывает, сколько объектов в наборе и сколько строк изменится, и первые изменения «было → станет». «Применить» записывает после подтверждения, «Отменить операцию» возвращает прежние значения; изменения видны в «Истории правок».

Примеры
Копия Алматы: шероховатость фрагмента 74. Установщик «Установить эквивалентную шероховатость», значение 0,5 мм, набор «Фрагмент» — «Маг. сети для расчета НС (74)». Предпросмотр: «Объектов: 3722 · изменится строк: 1062» — у 2660 действующих участков фрагмента уже 0,5 мм, у остальных 1062 — в основном 2 мм (1037 участков); сверено запросом к heatpipesections. Паспортов труб во фрагменте 3797, но 75 участков сняты — они в набор не входят.
Та же копия: запись и отмена. «Установить дату планируемого ремонта» 31.12.2099 для двух участков, выбранных на карте: предпросмотр «Объектов: 2 · изменится строк: 2», было «—», станет 2099-12-31. После «Применить» в журнале правок — две строки и сводная запись; «Отменить операцию» вернула пустую дату обоим участкам, повторная отмена ответила «Операция уже отменена».
Если не получается
- «Выберите фрагмент», «Выберите объекты на карте», «Фильтр должен содержать фрагмент, видимую область или условие», «Укажите значение в условии фильтра» — не задан набор объектов.
- «Укажите значение», «Ожидается число», «Не меньше …», «Не больше …» (на сервере — «Значение больше …») — значение вне диапазона установщика.
- «Не подходят для установщика (нет объекта, удалён или не …)» со списком номеров — среди выбранных на карте есть объекты другого вида или снятые; они пропускаются.
- «Изменять нечего: у всех объектов набора уже это значение.» — «Применить» неактивна.
- «Параметры изменились — повторите предпросмотр.» — после предпросмотра поменяли установщик, значение или набор.
- «Данные изменились после предпросмотра: изменится … строк вместо … Повторите предпросмотр.» — объекты правили между предпросмотром и записью.
- «В наборе больше 50000 объектов — сузьте выбор» — разбейте фрагмент фильтром или видимой областью.
- «Групповая установка — нужно право …» — у пользователя охват «только свои» или нет права; попросите администратора дать охват «все».
- «Операция уже отменена» — отменять нечего.
Для администратора
- Флаг записи —
MUTATIONS_ENABLED; права — матрица «вид объекта × действие» в окне пользователей. - Каждая групповая операция оставляет в
audit_logпострочные записи и сводную записьGROUP_SETот имени пользователя с одной группой изменений; по ней работает отмена и «История правок». - Установщики меняют данные, которыми пользуется десктоп: после установщиков с предупреждением о расчёте пересчитайте режим.
Для разработчика
- API (
routers/group_setters.py,database/group_setters.py):GET /api/v1/group-setters(установщики, поля фильтра по целям,max_objects),GET /api/v1/group-setters/{key}/options?q=&fragment_ids=(значения справочника),POST /api/v1/group-setters/{key}/preview(selection: {mode: ids|fragment|filter, ids, fragment_ids, bbox, where},value),POST /api/v1/group-setters/{key}/apply(+expected_changes, расхождение → 409stale_preview),POST /api/v1/group-setters/undo(change_group_id,dry_run). Права —require_permission(network=True)и_guard_setter(охват «все»). - Установщики, таблицы и колонки — только из списка
SETTERSв коде, имена сверяются с каталогом БД, значения передаются параметрами. - Веб:
components/GroupSetterDialog.vue,components/SetterValueInput.vue,services/groupSettersService.ts,utils/groupSetters.ts; выбор на карте —composables/useJournalMapBridge.ts. - Тесты: API —
tests/test_group_setters.py; веб —tests/components/GroupSetterDialog.spec.ts,tests/utils/groupSetters.spec.ts; e2e —e2e/functions/source-data.spec.ts(«Групповые установщики»: предпросмотр, запись и отмена на фрагменте 42 со сверкой через API).
