Тепловые потери
Тепловые потери по сезонам и готовность источников.
Возможности
- «Сезоны»: отопительные сезоны с датами, городом, расчётными температурами, нормой потерь воды и объёмами систем; карточка сезона с климатом по месяцам (воздух, подвал, грунт). Правка параметров сезона — с правом правки. Значок Excel в заголовке — все сезоны одной таблицей.
- «Источники»: готовность каждого источника к расчёту — общие параметры, месяцы, заполнение или обвязка. Плитки «Готовы к расчёту», «Неполные данные», «Всего источников» — фильтры списка.
- Карточка источника: паспорт для потерь (год расчёта, ёмкость сети, опрессовки весной и осенью), месяцы работы с температурами.
- «Нормативный расчёт»: потери «Нормативные» или «Фактические» за сезон — по всем источникам или по участкам одного фрагмента.
- «Задать условия работы» — заполнить месяцы источника из климата сезона и его температурного графика.
- Результат: итоги по источникам за отопительный период, лето и год; листы отчёта десктопа (МесПотери, ГодПотери, НормыЗима, НормыЛето, МатХар, МесТемп, ИТОГО, ТехнПСВ, Ёмкость, баки, опрессовка, промывка, САРЗ и другие); потери по участкам с переходом на карту; Excel.
- «Тепловой расчёт сети» в карточке источника — гидравлический и тепловой расчёт его фрагмента (это не модуль «Теплопотери»).
Как это работает
Что попадает в расчёт. Кнопка «Источники» показывает, какие источники приписаны к участкам сезона или фрагмента, сколько у них участков и труб, есть ли развёрнутый температурный график и заданы ли «Условия работы». Источник без условий работы не считается.
Условия работы. Из климата сезона (12 месяцев) получается 14 строк: месяцы начала и конца сезона делятся на отопительную и летнюю части по числу дней. Для каждой строки — температуры воздуха, подвала, грунта и температуры сетевой воды t1/t2 по температурному графику источника при этой температуре воздуха. Температура подпитки остаётся прежней; у нового источника — 0.
Потери через изоляцию — как в десктопном модуле poteriNewPg:
- норма удельных потерь q, ккал/(ч·м), берётся из таблицы норм 39 по диаметру, году норм и прокладке и интерполируется по температуре месяца: для надземной и подвальной прокладки — по t1 (подача) или t2 (обратка), для подземной — по средней (t1 + t2)/2;
- β — коэффициент местных потерь из справочника 30 по Ду и прокладке (магистральный или распределительный), K — коэффициент по испытаниям из параметров источника;
- за час: Q = q · L · β · K / 10⁶ Гкал/ч, отдельно для подающего и обратного трубопровода.
Потери с утечкой: объём сети V = Σ(Lп + Lо) · π · dвн²/4; летом он умножается на 0,5 + t%/200, в отопительный период к нему добавляются объёмы систем отопления и вентиляции, круглый год — ГВС. Потери: V · a/100 · Δt / 1000 Гкал/ч, где a — норма потерь воды сезона, % в час, Δt = (t1 + t2)/2 − t подпитки.
За период: часовые потери месяца × дни работы × 24, суммы — за отопительный период, лето и год. Средние температуры периодов — взвешенные по дням.
Что сохраняется. Расчёт записывается как обычный расчёт без фрагмента (чтобы гидравлика его не выбирала «последним»): удельные потери участков по месяцам — в ut_teplo_out, листы отчёта — в heatlosses_report_out. Удаление расчёта стирает и эти строки.
«Фактические» — те же формулы по таблицам фактических данных (heatLosesMainFact и другие). Часть SQL десктопа для фактических потерь нерабочая, поэтому перенесена логика нормативных.
Плитки вкладки «Источники» и «Источники расчёта» считают готовность по-разному: на вкладке нужны общие параметры, месяцы и заполнение (или обвязка); в расчёте достаточно заданных условий работы.
Что нужно для работы
- Отопительный сезон с климатом по месяцам и источники с развёрнутым температурным графиком.
- Нормы потерь (таблицы 39 и 30) — в справочной базе
spravна том же сервере. - «Рассчитать», «Тепловой расчёт сети», удаление расчёта — право «Запуск расчётов» и включённая на сервере правка данных.
- «Задать условия работы» — право «Источники и насосные станции» → «Свойства» и включённая правка данных; правка сезона — право «Правка журналов и атрибутов».
- Воркер расчётов: задача идёт через очередь Celery.
Шаги
Откройте «Инструменты» и наберите в поиске «Тепловые потери» — пункт выделен рамкой.

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

Откройте вкладку «Источники»: плитки показывают, сколько источников готово к расчёту и у скольких не хватает данных; плитка — фильтр списка.

Откройте «Нормативный расчёт»: выберите отопительный сезон и, если нужно, фрагмент, нажмите «Источники» — появится список источников с готовностью, затем «Рассчитать». Готовые расчёты появятся в таблице «Расчёты» с потерями через изоляцию и с утечкой.

Примеры
Сезон 2025–2026, фрагмент 74 (копия Алматы, сезон № 2: 15.10.2025 — 15.04.2026, норма потерь воды 0,25 %): «Источники» показывает 4 источника — два «АТЭЦ1» (1 597 и 1 572 участка, около 320 и 315 км трубы) и два «АТЭЦ2» (220 и 231 участок); у всех заданы условия работы, «готовы 4 из 4».
Условия работы АТЭЦ1 (источник № 176, сезон № 2), как их составит «Задать условия работы»: январь — 31 день, tн −6,8 °C, подвал 5,0, грунт 7,2, сеть 88,9 / 53,1 °C; апрель делится на 15 дней отопления (tн 8,5) и 15 дней лета (tн 12,1); летом t1/t2 = 60,0 / 41,5 °C — нижняя срезка графика. Температура подпитки во всех строках 0 °C: её надо задать, иначе Δt утечки завышено.
Вкладка «Источники» на той же базе: 134 источника, готовы к расчёту 5, неполные данные — 129. Оба источника фрагмента 74 — «неполные данные»: нет заполнения и обвязки, хотя для нормативного расчёта они готовы.
На копии базы нормативных расчётов пока нет: числа итогов — после «Рассчитать».
Если не получается
- «Рассчитать» неактивна — не выбран сезон или не загружены источники: нажмите «Источники» (после смены фрагмента — снова).
- Источник «неполные данные» — заполните параметры источника (кнопка «Источники» в расчёте).
- «Рассчитать» неактивна — сначала нажмите «Источники»: кнопка включается, когда хотя бы у одного источника заданы условия работы. Фрагмент выбирать не обязательно; после смены фрагмента снова нажмите «Источники».
- «нет — источник не считается» в колонке «Условия работы» — нажмите «Задать условия работы» (кнопка серая, пока у источника нет температурного графика).
- «Температурный график источника … не развёрнут» — рассчитайте график в окне «Температурные графики».
- «Нет таблицы heatlosses_report_out…» (ответ 503) — на базе не применена миграция; обратитесь к администратору.
- «Сезон не найден» — сезон удалили или выбран сезон другого вида потерь.
- «Таймаут ожидания расчёта теплопотерь» — окно ждёт 10 минут; расчёт может завершиться позже, нажмите обновление списка «Расчёты».
Для администратора
- Справочная база норм:
SPRAV_DB_NAME(по умолчаниюsprav),SPRAV_DB_HOST,SPRAV_DB_PORT,SPRAV_DB_USER,SPRAV_DB_PASSWORD— без них берутся параметры основной базы. - Очередь задачи:
HEAT_LOSSES_QUEUE(по умолчанию — основная очередь города). Запись — только приMUTATIONS_ENABLED. - Таблица
heatlosses_report_out— миграцияsql/migrations/20260928_heat_losses_report_out.sql; исходные данные —heatlosesmain,heatlosessource,heatlosessourcemonths,losesbyfilling,heatpipesectionsharnessи их*Fact. - В журнал действий: запуск (
RUN,heat_losses_norm), условия работы (UPDATE,heatlosessourcemonths).
Для разработчика
- API:
GET /api/heat-losses/lookups,/seasons,/seasons/{id},/sources,/sources/{id}; нормативный расчёт —GET /api/v1/heat-losses/norm/seasons?loses_type=,GET /api/v1/heat-losses/norm/scope,POST /api/v1/heat-losses/norm/run,GET /api/v1/heat-losses/norm/results,/results/{id},/results/{id}/sections,/results/{id}/excel; условия работы —POST /api/v1/heat-losses/sources/{id}/work-conditions(dry_run: true— только показать); удаление —DELETE /api/v1/calculations/{id}; «Тепловой расчёт сети» —POST /api/v1/heat-losses/run. Excel сезонов — отчётheat-loss-seasons(GET /api/reports/excel/heat-loss-seasons). - Код:
routers/heat.py, формулы —database/heat_losses_norm.py, хранение и Excel —database/heat_losses_store.py, журнал —database/heat_losses.py, задача —worker.py(run_heat_losses_norm). - Веб:
components/HeatLossJournalDialog.vue,components/HeatLossNormPanel.vue. - Тесты: API —
tests/golden/test_heat_losses_desktop.py(сверка с десктопом), маршруты —tests/test_security_stage7.py.
