Карточка объекта
Карточка объекта сети: все поля паспорта по вкладкам, результаты расчёта, журналы объекта, история правок и правка свойств — как окно свойств десктопа.
Возможности
- Все поля паспорта объекта по вкладкам и группам, как в окне свойств десктопа; поиск по полям, счётчик «заполнено N из M».
- Блок «Результаты расчёта» у объекта слоя результатов: расход, скорость, падение давления, удельное падение, напоры в начале и в конце.
- Кнопки действий: паспорт в Excel, анализ отключения («какие задвижки закрыть»), трассировка, журналы объекта (нарушения, шурфовки, осмотры, ремонты, опрессовки), технические условия, индикаторы коррозии, данные тепловых потерь, температурный график источника, оборудование, «История правок объекта», «Копировать всё».
- Правка свойств: одного объекта; нескольких сразу («Править несколько…», Shift + рамка на карте); «Как у соседнего»; шаблоны карточек; подсказки для полей (сортамент труб, справочные таблицы, местные сопротивления, коэффициент смешения, схема присоединения потребителя).
- Каждое сохранение можно отменить кнопкой «Отменить» в сообщении; история правок показывает, кто, когда и что менял.
- Карточка закрепляется справа или открепляется в плавающее окно.
Как это работает
Что показывается. Поля, вкладки и их названия берутся из описания карточек десктопа в базе города (таблицы tg_tabs, tg_names), поэтому карточка совпадает с окном свойств десктопа. Значения — из таблиц сети (linesobj, nodes, таблицы потребителей, источников и оборудования), запрос GET /api/{тип}/{слой}/{id}.
Правка. «Редактировать свойства» переводит поля в форму. Сервер при сохранении:
- проверяет право на вид объекта и территорию (свои фрагменты или «только свои» объекты);
- сверяет версию строки: если объект изменили после открытия карточки, сохранение не пройдёт, карточка предложит перечитать данные;
- пишет все поля одной транзакцией вместе с журналом изменений (
audit_log) и журналом отмены.
Изменённые поля помечаются, внизу — «Изменений нет» или их число. Обязательные поля отмечены звёздочкой, числовые проверяются сразу («Ожидается число»).
«Как у соседнего» копирует конструктивные поля с примыкающего участка (для узла — с соседнего или ближайшего узла). Изменённые поля подсвечиваются — их нужно проверить и сохранить.
Шаблон — набор значений полей с названием: «Сохранить как шаблон…», затем «Применить шаблон» к другому объекту или к выбору. Свой шаблон видит только автор, общий — все редакторы.
Несколько объектов. В режиме «Править несколько» карточка показывает общие значения; поля с пометкой «разные» не меняются, пока в них не введено значение. Перед сохранением видно, сколько строк изменится (до 5000 объектов за раз).
Одновременная работа. Если тот же объект сейчас правит другой пользователь, карточка предупреждает: «Этот объект сейчас правит …». Если он сохранил раньше — «Объект изменил … — значения в форме устарели» и кнопка обновить.
Что нужно для работы
- Смотреть — любой, кто вошёл.
- Править — право «Свойства» (
edit) на вид объекта в матрице прав: участки, узлы, потребители, источники, оборудование, режим (узлы с заданным напором и подпитки). Территория: «все» или «только свои» объекты (созданные этим пользователем). - Общие шаблоны — ещё право «Справочники и шаблоны карточек».
- Сервер:
MUTATIONS_ENABLED=true, иначе карандаша нет.
Шаги
Щёлкните по объекту на карте — у точки щелчка откроется краткая сводка. Если в точке несколько объектов (подача и обратка, узел и участок), сначала появится меню «Выберите объект».

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

«Редактировать свойства» (карандаш) переводит карточку в правку. Сверху — «Как у соседнего» и «Шаблон», внизу — счётчик изменений, «Отмена» и «Сохранить».

Карточка узла: «Оборудование узла» (кнопка с вентилем) — задвижки, регуляторы, насосы и другое оборудование, примыкающее к узлу и в его внутренней схеме.

Примеры
Участок на копии Алматы. Участок «М2 2КОК-13А — М2 2КОК-16» (Ду400): заполнено 104 поля из 170. Вкладки: «Участок трубопровода», «Конструкция», «Даты» и другие. В правке видны «Владелец участка теплопровода», «Гидравлическое сопротивление», состояния подающего и обратного трубопроводов («открыто») и «Стандарт труб на участке».
Узел без оборудования. Узел 2КОК-13А: 33 поля из 50. «Оборудование узла 0» — «У узла и в его внутренней схеме нет оборудования с карточкой (задвижки, регуляторы, насосы…)».
Отмена ошибочной правки. Поменяли Ду участка и сохранили — внизу «Сохранено полей: 1» с кнопкой «Отменить». Нажатие вернёт прежнее значение: «Правка свойств отменена». Если после вас объект уже кто-то поменял — «Отменить нельзя: объект изменён после этой правки.»
Если не получается
- Нет карандаша «Редактировать свойства» — нет права на этот вид объекта, объект вне вашей территории или запись на сервере выключена.
- «Объект изменил другой пользователь. Перечитать карточку? Ваши изменения будут потеряны.» — сохраните заново после перечитывания.
- «Сохранено, но карточку не удалось обновить — выберите объект заново» — данные записаны, щёлкните по объекту ещё раз.
- Щелчок по объекту ничего не открывает — выключен режим «Информация об объекте» (кнопка «i» над картой) или включены «Измерения».
Для администратора
- Права: матрица видов × действий (
permissions.py): видыline,node,consumer,source,equipment,regime; действия «Свойства» (edit), «Создание», «Перемещение», «Удаление»; охват «нет / только свои / все». Готовые роли: расчётчик — свойства потребителей, источников, оборудования и режима; оператор — свои объекты; редактор — всё, удаление только своего; администратор — всё. - Запись:
MUTATIONS_ENABLED=true. Каждое сохранение — строкаaudit_logс автором; её видно в «Истории правок» и в «Кто на карте».
Для разработчика
- Веб:
components/AttributePanel.vue(карточка и кнопки),components/InspectorPanel.vue→components/objectCard/ObjectCardShell.vue(рамка, закрепление),ObjectCardEdit.vue,CardFieldEditor.vue,CardHelperDialog.vue,ConsumerSchemeDialog.vue,NodeEquipmentList.vue; выбор объекта —utils/mapPick.ts,components/FeatureMenu.vue. - API правки —
routers/card_edit.py:GET /api/v1/card-edit/{kind}/{table}/{id}(поля и версии),PUT /api/v1/card-edit(сохранение, 409 при чужой правке),POST …/batch/preview|apply(несколько объектов),GET …/neighbor/{kind}/{id}(«как у соседнего»),GET /api/v1/card-edit/equipment-at/{node_id}; шаблоны —/api/v1/card-templates(таблицаcard_template); отмена —POST /api/topology/undo; история —GET /api/v1/audit-log. - Тесты: веб —
tests/components/InspectorPanel.spec.ts,tests/utils/objectCard.spec.ts,tests/utils/desktopCard.spec.ts; API —tests/test_card_edit.py,test_card_desktop_rules.py,test_permissions.py.
