Индикаторы коррозии

Индикаторы коррозии: сезонная история показаний и оценки скорости коррозии.

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

Возможности

  • Плитки «Найдено» и по этапам («План», «Анализ», «После расчета», «Архивный»); нажатие на плитку этапа — отбор, повторное — снять.
  • Поиск по номеру индикатора, месту установки, улице, номеру дома, источнику, участку эксплуатации, ответственному и примечанию; фильтры «Этап», «Сезон (год)», «Стержень», «Оценка», «Агрессивность сетевой воды», «С даты», «По дату».
  • С карты журнал открывается для одной линии («индикаторы линии N») или узла («индикаторы у узла N»).
  • «Новый индикатор», правка и удаление. Карточка: номер, этап, место установки, линия, узел, участок сети и эксплуатации, камеры, даты плана, установки и извлечения, пластины, результаты обработки, «Оценка коррозионного процесса».
  • «История по отопительным сезонам» — все сезоны индикатора с датами, скоростью коррозии, оценкой и агрессивностью воды.
  • «На карте» — место индикатора.

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

Где хранятся данные. Журнал общий с десктопом ТГИД. Индикатор — строка таблицы indikator_korrozii, сезоны — indikator_korrozii_po_godam. Справочники: этап (stateindicator), состояние стержня (stateinds: «Извлечение», «Провал стержня»), оценка процесса (corrosionprocessmarks: от «Незначительный» до «Аварийный»), агрессивность сетевой воды (netwateraggressivenesses: «Низкая», «Допустимая», «Высокая», «Аварийная»).

Что показывает карточка. Если у индикатора есть история сезонов, этап, стержень, даты, пластины, скорость коррозии, оценка, агрессивность воды и примечание берутся из последнего сезона. Последним считается сезон с самой поздней датой извлечения, а если её нет — установки или плана. Поэтому запланированный сезон без извлечения может оказаться ниже сезона, извлечённого позже даты этого плана.

Что правится в вебе. У индикатора без истории правятся все поля карточки. У индикатора с историей поля сезона (этап, стержень, даты, пластины, результаты обработки, оценка, вода, примечание) только для чтения, а окна правки сезонов в вебе нет — их ведут в десктопе. Номер, место установки, линия, узел и остальные поля самого индикатора правятся всегда.

Линия и узел. По номеру линии карточка показывает узлы линии и диаметр трубопровода. Адрес (улица и дом) в вебе не задаётся и по линии не подставляется. Точка на карте — точка индикатора, если её нет — узел, иначе середина линии.

Фильтры. «Сезон (год)» отбирает индикаторы, у которых сезон начинается ровно в выбранном году. «С даты» и «По дату» сравниваются с датой установки последнего сезона, а если её нет — с датой плана.

Сохранение. Новый индикатор нельзя сохранить пустым: нужно хотя бы одно поле. При правке отправляются только изменённые поля; если изменений нет, окно так и говорит.

Удаление удаляет строку индикатора вместе с его историей сезонов (строки indikator_korrozii_po_godam с этим id_i) одной транзакцией: если не удалось что-то одно, не удаляется ничего. Внешнего ключа между таблицами нет — сезоны удаляет сам сервер.

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

  • Смотреть журнал и карточки — любой вошедший.
  • Создавать, править, удалять. Окно показывает кнопки, если одновременно есть право «Журналы», включена запись (MUTATIONS_ENABLED=true) и роль не ниже «Редактор»; пользователю-роли PostgreSQL вместо роли нужно предметное право «Коррозия». Это та же проверка, что делает сервер при записи, поэтому кнопки видны только тем, у кого запись пройдёт.

Шаги

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

    Пункт «Индикаторы коррозии» в панели «Инструменты»

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

    Окно «Индикаторы коррозии»

  3. «Создать» открывает карточку нового индикатора. «Размещение и сеть»: номер индикатора, этап, место установки, линия и узел (узлы линии и диаметр подтянутся), признак трубопровода, теплоноситель, источник тепла, участок эксплуатации, сеть, начальник участка. «План и экспозиция»: даты планирования, установки и извлечения, состояние стержня, ответственный. «Сохранить» добавит запись в журнал, «Отмена» — выйти без сохранения.

    Индикаторы коррозии: шаг 3

Примеры

Копия Астаны. 379 индикаторов, у 353 есть история — всего 1297 сезонов, самое большее 13 у одного индикатора. Плитки: «После расчета» — 347, «План» — 32. Все индикаторы привязаны к линии и имеют точку, ни один не привязан к узлу. Оценки по сезонам: «Незначительный» — 562 сезона (средняя скорость 0,0111 мм/год), «Слабый» — 306 (0,0282), «Средний» — 100 (0,0446), «Сильный» — 217 (0,0795), «Аварийный» — 18 (0,1630), без оценки — 94. Сезонов по году установки — от 90 до 107 в год с 2011 по 2025, в 2023 году — 184.

Индикатор № 59 «139,140,141» на той же копии — 13 сезонов. Самая новая запись — план от 23.05.2023 с этапом «План», но извлечения у неё нет. Сезон, извлечённый 22.06.2023, оказывается позже, и карточка показывает его: «После расчета», скорость 0,0521737 мм/год, оценка «Сильный», вода «Допустимая».

Копия Алматы. Журнал пуст: «В текущей базе журнал пока не заполнен».

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

  • «Заполните хотя бы одно поле индикатора» — при создании все поля пустые.
  • «Изменений нет — сохранять нечего» — в карточке ничего не изменили.
  • Поле сезона не правится — у индикатора есть история сезонов; правьте сезон в десктопе.
  • Нет кнопок «Новый индикатор», правки и удаления — нет права «Журналы», роль ниже «Редактора» (у пользователя-роли PostgreSQL — нет права «Коррозия») или запись на сервере выключена.
  • «Сервер не вернул идентификатор созданной записи» — индикатор, возможно, создан; обновите список и проверьте.
  • Адрес в карточке пустой — веб адрес индикатора не заполняет.
  • «Сезон (год)» показывает мало записей — фильтр берёт ровно выбранный год, а не его и более поздние.

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

  • Запись: MUTATIONS_ENABLED=true, роль «Редактор» или «Администратор»; при AUTH_BACKEND=pg — предметное право «Коррозия», окончательно права проверяет база (sql/pg_auth/03_grants.sql). Право «Журналы» сервер для этого журнала не проверяет, но без него окно не покажет кнопок.
  • Таблицы десктопные (indikator_korrozii, indikator_korrozii_po_godam и справочники); веб их не создаёт. При удалении индикатора сервер удаляет и его сезоны из indikator_korrozii_po_godam (по id_i) в той же транзакции.
  • Создание, правка и удаление пишутся в audit_log (INSERT, UPDATE, DELETE).

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

  • Чтение: GET /api/corrosion-indicators (phase_id, rod_state_id, process_mark_id, water_aggressiveness_id, season_year, date_from, date_to, line_id, node_id, search; state_counts), GET /api/corrosion-indicators/lookups, GET /api/corrosion-indicators/geojson, GET /api/corrosion-indicators/{id} — routers/registries.py, database/corrosion_indicators.py (CORROSION_FROM — выбор последнего сезона).
  • Запись через общий CRUD: POST /api/v1/create/indikator_korrozii, PUT /api/v1/update/indikator_korrozii/{id}, DELETE /api/v1/delete/indikator_korrozii/{id} — routers/crud.py, права — auth.py (role_for_mutation, cap_for_mutation); сезоны при удалении — database/db.py (_DELETE_CHILDREN, delete_object).
  • Веб: components/CorrosionIndicatorJournalDialog.vue, utils/registryEdit.ts (CORROSION_COLUMN_BY_KEY, CORROSION_SEASON_KEYS, corrosionEditableKey), utils/permissions.ts (canEditCorrosion).
  • Тесты: API — tests/test_registries_router.py, tests/test_crud_router.py, tests/test_delete_object_children.py; веб — tests/utils/registryEdit.spec.ts.
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо