Прогноз аварийности
Прогноз аварийности: вероятность повреждения участков на 2 года по журналу, возрасту, прокладке и повреждениям рядом; модель проверяется на годах, которых не видела.
Возможности
- Вероятность повреждения каждого участка за ближайшие 2 года — по журналу повреждений, паспорту, глубине и повреждениям рядом.
- Проверка модели на годах, которых она не видела: ROC-AUC, доля повреждений на 10 % участков с наибольшим риском, сравнение с логистической регрессией, «только история повреждений и длина» и «повреждения в 200 м».
- «Если бы перекладывали по прогнозу» — какая доля повреждений проверочных лет пришлась бы на первые 1, 2, 5, 10, 20 км перекладки: по прогнозу, «Самые старые первыми», «Где рядом были повреждения».
- «Что влияет на прогноз» — вклад 8 главных признаков; «Ожидается около N повреждений за 2 года».
- «Участки с наибольшим риском»: 30 строк в окне, 200 — на карте («На карте», «Оставить на карте»), цвет — класс риска.
- «Рассчитать» / «Пересчитать» — обучить модель заново по текущему журналу.
- Вкладка «План перекладок»: бюджет в км или в деньгах, «Последствия повреждения», «Затраты объекта, м трубы», «Составить план», список объектов, карта и выгрузка в Excel; расценки перекладки за метр по классам диаметра.
Как это работает
Данные. Повреждения — записи журнала нарушений с участком и датой осмотра; повреждения рядом — все записи с точкой на карте. Участки — с геометрией, паспорт — первый по номеру паспорт участка, глубина — из оценки глубины теплосети.
Копии сети. Если одна труба лежит в нескольких фрагментах (магистрали по отопительным сезонам), участки с совпадающими концами (сетка 1 м) и длиной склеиваются в один — участок самого нового фрагмента; повреждения копий переходят на него. Подача и обратка одного фрагмента не склеиваются.
Признаки считаются на дату среза только по прошлому: длина, условный диаметр, возраст (от перекладки до среза, иначе от прокладки), лет с капремонта, тип прокладки, вид сети, глубина верха трубы; повреждения участка — всего, за 3 года, лет с последнего; повреждения в 50 и 200 м — всего и за 3 года; повреждений фрагмента на км. Материал и тип изоляции не берутся: их обновляют при ремонте после повреждения, и модель училась бы на будущем.
Кто входит в расчёт. Журнал обычно ведётся по участкам с заполненным паспортом. Чтобы модель не училась отличать «участок в журнале» от остальных, в расчёт берутся участки, у которых заполнено не меньше паспортных полей, чем у 90 % повреждённых до среза обучения (поля: диаметр, тип прокладки, материал и тип изоляции, вид сети, даты прокладки, перекладки и капремонта). В окне это сказано строкой «В расчёт вошли N участков с заполненным паспортом (не меньше K из 8 полей…)». Учитываются только фрагменты, где до среза были повреждения.
Проверка по времени. Срезы — 1 января. Проверочный срез — последний, у которого двухлетнее окно целиком в журнале и в нём не меньше 100 повреждений; срез обучения — на 2 года раньше, с тем же требованием. Модель (градиентный бустинг: 150 деревьев глубины 3) учится на срезе обучения и предсказывает проверочное окно. Итоговая модель учится на проверочном срезе и считает риск «на сегодня» — на день после последней записи журнала. Ожидаемое число повреждений — сумма вероятностей.
Сохраняется расчёт (tgid_failure_run: срезы, проверка, вклад признаков) и риск каждого участка (tgid_failure_risk). Окно показывает последний расчёт. Классы цвета в списке — по месту: первые 5 %, 5–20 %, 20–50 %, вторая половина списка.
План перекладок. Польза трассы = вероятность повреждения × последствия:
- «Отключаемые потребители» (по умолчанию) и «Отключаемая нагрузка» — кого отключит авария на участке: зона задвижек и всё ниже без обходного питания, по топологии. Считается один раз при первом плане (около 15 с) и хранится; после изменения сети — «Пересчитать после изменения сети».
- «Оценка износа (паспорт)» — множитель последствий и расхода из последнего расчёта износа.
- «Только число повреждений» — без последствий.
Единица — трасса: участки одного фрагмента между развилками, подача и обратка — один коридор. Стоимость — длина (км) или длина × расценка класса диаметра. Затраты объекта (по умолчанию 25 м трубы) учитываются в порядке отбора: без них в план попадают обрезки по 2 м. Отбор жадный — по пользе на единицу стоимости, пока хватает бюджета. Для сравнения тот же бюджет считается и по принципу «самые старые первыми». План не сохраняется, расценки — сохраняются.
Что нужно для работы
- Журнал нарушений с привязкой к участкам и датами — минимум два двухлетних окна, в каждом не меньше 100 повреждений. Нарушения без участка можно привязать в журнале («Привязать к участкам»).
- Смотреть прогноз и составлять план — любая роль, включая «Просмотр».
- «Рассчитать» / «Пересчитать» — право «Запуск расчётов» и включённая на сервере запись данных.
- Расценки — право «Справочники и шаблоны карточек» и правка данных; «Пересчитать после изменения сети» — «Запуск расчётов» и правка данных.
- Выгрузка плана в Excel — право «Выгрузки и отчёты».
Шаги
Откройте «Инструменты» и наберите в поиске «Прогноз аварийности» — пункт выделен рамкой.

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

Откройте окно: виден последний расчёт и проверка модели. Ниже — «Что влияет на прогноз»: вклад признаков, обычно впереди возраст и повреждения рядом.

Прокрутите к списку «Участки с наибольшим риском»: участок, фрагмент, диаметр, возраст, повреждения на нём и рядом, вероятность повреждения за 2 года. Цвет — класс риска.

Перейдите на «План перекладок», задайте бюджет и затраты объекта, нажмите «Составить план»: сводка — сколько повреждений и отключений снимает план, ниже объекты перекладки.

Нажмите «На карте», затем «Оставить на карте»: участки риска остаются на карте, окно закрывается.

Примеры
Копия базы Алматы. Журнал нарушений пуст — окно пишет «Расчётов прогноза ещё нет.», «Составить план» неактивна. Запрос плана напрямую сервер отклоняет: «Нет прогноза аварийности — сначала рассчитайте его». Расценки перекладки не заполнены.
Копия базы Астаны (замеры 31.10.2026, журнал — 1785 нарушений): срез обучения 2020, проверка на 2022–2023 годах. После склейки копий в расчёте 928 км сети; ROC-AUC 0,88–0,91, только по истории повреждений — 0,76–0,80. Первые 20 км по прогнозу собрали бы 60 % повреждений 2022–2023 годов, «самые старые первыми» — меньше 1 %. Пересчёт занимает около 40 с. План на 5 км по отключаемым потребителям снимает 17 % ожидаемых отключений, «самые старые первыми» — 4 %.
Если не получается
- «В журнале повреждений нет записей с участком и датой» — привяжите нарушения к участкам и заполните дату осмотра.
- «Мало истории: нужно два окна по 2 г. с 100+ повреждениями» — журнала мало для проверки модели.
- «Нет права «Запуск расчётов»» — пересчитывать прогноз может только роль с этим правом; смотреть последний расчёт можно и без него.
- Пересчёт отклонён с упоминанием
MUTATIONS_ENABLED— на сервере выключена запись данных. - «Расценки перекладки не заполнены — план в деньгах не составить, задайте бюджет в км».
- «Классы диаметра повторяются» — у двух строк расценок одинаковый «Ду до».
- Пересчёт идёт дольше минуты — обучение на большой сети; окно ждёт ответа до 5 минут.
Для администратора
- Запись данных —
MUTATIONS_ENABLED; без неё нельзя ни пересчитать прогноз, ни сохранить расценки, ни пересчитать последствия. - Таблицы:
tgid_failure_run,tgid_failure_risk,tgid_relay_price,tgid_line_consequence; глубина —tgid_heat_depth. - Модель своя, на numpy: внешние библиотеки машинного обучения не нужны.
Для разработчика
- API:
POST /api/v1/forecast/failures/run?horizon_years=(1–5, по умолчанию 2),GET /api/v1/forecast/failures/runs,GET /api/v1/forecast/failures/runs/{id}/top?limit=&fileid=;GET|PUT /api/v1/relay/prices,POST /api/v1/relay/plan(budget,unitkm|money,objectiveconsumers|load|wear|failures,job_overhead_m,run_id,fileid),POST /api/v1/relay/plan.xlsx,GET /api/v1/relay/consequences,POST /api/v1/relay/consequences/refresh. Код —database/failure_forecast.py,database/failure_model.py,database/relay_plan.py,database/outage_consequence.py; маршруты —routers/failure_forecast.py,routers/relay_plan.py. - Веб:
components/FailureForecastDialog.vue(ключfailureForecast),components/RelayPlanPanel.vue, типы, классы риска и слой —utils/failureForecast.ts, запросы —services/api/failureForecast.ts. - MCP:
failure_hotspots— места повторных отказов (3 и больше в 30 м в разные дни). - Тесты:
tests/utils/failureForecast.spec.ts; API —tests/test_failure_forecast.py,test_failure_forecast_router.py,test_failure_model.py,test_relay_plan.py,test_outage_consequence.py.
