Износ и план ремонтов
Износ и план ремонтов: индекс износа участков по методике ТГИД, приоритет ремонта и записка к плану от ИИ.
Возможности
- «Рассчитать» — оценка износа всех участков сети или только видимых фрагментов (флажок «Только видимые фрагменты»).
- Выбор любого сохранённого расчёта износа: номер, название, число участков и средний износ.
- Сводка расчёта: «Участков», «Средний износ», «Без даты прокладки», «С повреждениями», «С расходом по расчёту», число участков по категориям 1–5 и сколько факторов из 8 заполнено.
- Список до 200 участков: «Сортировка» по приоритету, износу, сроку или повреждениям, отбор «Категория от» и по видимому фрагменту. Подсказка строки — баллы по каждому фактору; щелчок — участок на карте.
- «Слой износа на карте» — участки в цвете категории; «Оставить на карте» и «Скрыть слой».
- «Записка к плану» — помощник ИИ группирует участки с наибольшим приоритетом, предлагает действия и срочность («в этот сезон», «в следующий сезон», «наблюдение») (если ИИ включён).
Как это работает
Формула — экспертная методика десктопа ТГИД (gid6). Для каждого участка ставятся баллы от 1 до 5 по восьми факторам и складываются с весами:
| Фактор | Вес | Откуда |
|---|---|---|
| Срок эксплуатации | 0,15 | возраст от даты перекладки, иначе от даты первой прокладки: до 7 лет — 1, до 15 — 2, меньше 20 — 3, меньше 25 — 4, старше — 5 |
| Повреждаемость | 0,20 | нарушений на 100 м участка: меньше 1 — 1, меньше 2 — 2, меньше 4 — 3, меньше 5 — 4, больше — 5 |
| Внешний вид | 0,05 | балл из паспорта участка |
| Состояние оборудования | 0,20 | балл из паспорта |
| Категория нарушений | 0,10 | балл из паспорта |
| Внешняя коррозия | 0,10 | балл из паспорта |
| Внутренняя коррозия | 0,10 | балл из паспорта |
| Состояние конструкций | 0,10 | балл из паспорта |
Износ = сумма (вес × балл) × 20 %. Пустой балл не считается «новой трубой»: в списке и на карте показан износ по заполненным факторам — сумма делится на сумму их весов. Категория: до 20 % — 1 (хорошее), 20–40 % — 2 (удовлетворительное), 40–60 % — 3 (требует внимания), 60–80 % — 4 (предремонтное), от 80 % — 5 (критическое).
Нарушения берутся из журнала нарушений. Нарушение без участка привязывается по месту — к ближайшему участку не дальше 20 м и ко всем его копиям в других фрагментах. Если у участка нет длины по паспорту, повреждаемость не оценивается.
Приоритет ремонта = износ / 100 × последствия × множитель расхода. Последствия — от 1 до 2,4 по справочникам паспорта: объём отключаемых потребителей, ущерб населению и инфраструктуре. Множитель расхода — от 1 до 1,5: 1 + 0,5 × расход / 1000 т/ч (больше 1000 т/ч — 1,5); расход — наибольший по участку из последнего расчёта его фрагмента.
Расчёт выполняет фоновая задача. Результат сохраняется: шапка — в calculation_iznos, строки участков — в wear_out. Последний расчёт износа берут слой «Износ» тематических карт, условие «Износ» в выборке по условиям и план перекладок.
Сервер дописывает к результату замечания о данных: сколько участков без даты, не похожи ли даты ввода на даты внесения в ГИС (все даты в пределах 6 лет у более чем 1000 участков), заполнены ли экспертные баллы хотя бы у 5 % участков, пуст ли журнал нарушений.
Отбор по видимому фрагменту в списке и на слое работает, когда на карте ровно один фрагмент; при нескольких показываются все.
Что нужно для работы
- Смотреть расчёты, список и слой — любая роль, включая «Просмотр».
- «Рассчитать» — право «Запуск расчётов» и запущенный воркер фоновых задач.
- Даты прокладки или перекладки и длины в паспортах участков; без них срок и повреждаемость не оцениваются.
- «Записка к плану» — помощник ИИ включён на сервере и право «Запуск расчётов».
Шаги
Откройте «Инструменты» и наберите в поиске «Износ и план ремонтов» — пункт выделен рамкой.

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

Выберите расчёт износа (или нажмите «Рассчитать» для нового) и нажмите «Слой износа на карте»: участки раскрасятся по категориям, ниже откроется список участков по приоритету.

Нажмите «Оставить на карте» — окно закроется, слой износа останется на карте. Снять слой — снова откройте окно и нажмите «Скрыть слой». Если закрыть окно крестиком, слой снимается.

Примеры
Копия базы Алматы, расчёт износа №3 (все участки, 23.10.2026): 91 004 участка, средний износ 27,7 %. Категория 2 — 90 990 участков, категория 3 — 13, категорий 1, 4 и 5 нет. Без даты прокладки — 9 574, с повреждениями — 0 (журнал нарушений в копии пуст), с расходом по расчёту — 6 869. Заполненных факторов: 2 из 8 — у 81 417 участков, 1 — у 9 586: экспертных баллов нет, индекс держится на сроке и повреждаемости.
Участок УТ-5-34 — 2-35, фрагмент 74: Ду 700, 105,6 м, канальная прокладка, перекладка 11,8 лет назад. Баллы: срок 2, повреждаемость 1. Износ по заполненным факторам — (0,15 × 2 + 0,20 × 1) / 0,35 × 20 = 28,6 %, категория 2. Последствия 1,4, расход 2544 т/ч — множитель 1,5. Приоритет — 0,286 × 1,4 × 1,5 = 0,6, наибольший в расчёте.
«Категория от 3» даёт 13 участков, и у всех износ ровно 40 %: длина по паспорту 0, поэтому заполнен один фактор — срок (балл 2). Это не изношенные трубы, а участки без длины: исправьте паспорт и пересчитайте.
На копии Астаны, где журнал нарушений ведётся, привязка нарушений по месту увеличила число участков категорий 4–5 с 194 до 1522 (замер 31.10.2026).
Если не получается
- Кнопки неактивны — нет ни одного расчёта износа: нажмите «Рассчитать».
- Много участков «без даты прокладки» — износ по ним считается по остальным факторам; заполните год прокладки в свойствах участков.
- «Расчёт износа ещё не выполнялся — нажмите «Рассчитать».»
- «Расчёт износа не выполнен» с причиной «расчёт не завершился за отведённое время» — задача не закончилась за 20 минут; проверьте воркер фоновых задач.
- «Расчёт износа не выполнен: Нет участков для расчёта износа (проверьте фрагменты)» — у видимых фрагментов нет участков с паспортом.
- «Слой износа не построен» — сервер не отдал участки расчёта; выберите расчёт заново.
- «Помощник ИИ не ответил» — ИИ выключен на сервере, нет связи с моделью или расчёт износа не найден.
- Флажок «Только видимые фрагменты» не сужает список — на карте больше одного фрагмента; оставьте видимым один.
Для администратора
- Очередь задачи —
HEAT_LOSSES_QUEUE(общая с расчётом теплопотерь); без неё — очередь по умолчанию. - Таблицы
calculation_iznosиwear_outAPI создаёт при старте; безwear_outрасчёт отвечает 503. - ИИ:
AI_ENABLED,AI_MODEL,ANTHROPIC_API_KEY. Модели передаются 40 участков с наибольшим приоритетом. - Запуск расчёта пишется в журнал действий (операция
RUN, таблицаwear_out), удаление расчёта —DELETE.
Для разработчика
- API:
POST /api/v1/wear/calculate({fragment_ids?, name?}→task_id; состояние —GET /api/v1/task/{task_id}),GET /api/v1/wear/runs,GET /api/v1/wear/latest,GET /api/v1/wear/{id},GET /api/v1/wear/{id}/sections(order:priority,wear,age,defects;min_category,fragment_id, до 1000 строк),GET /api/v1/wear/{id}/geojson,DELETE /api/v1/wear/{id}(право «Сохранение и сравнение расчётов»),POST /api/v1/ai/wear/plan. Код —database/wear.py,routers/wear.py, записка —ai/wear_plan.py. - Веб:
components/WearIndexDialog.vue(ключwearIndex), запросы —services/wearService.ts. - MCP: инструмент
wear_priorities— участки по приоритету из последнего расчёта. - Тесты: API —
tests/test_wear.py.
