fix(eias-heat): column-aligned парсинг листа ТП по реальной сетке (#2119 B2) #2176

Merged
bot-backend merged 1 commit from fix/eias-heat-sheet-grid into main 2026-07-02 17:55:16 +00:00
Collaborator

Summary

  • Первый прод-прогон тепло-лоадера (после #2172) распарсил МУСОР: defensive-эвристика «правейшее число строки» захватила служебную колонку шаблона ЕИАС Flag_Row_Size (высоты строк) — в heat_system_reserves попали рубрики анкеты («Количество заявок»=74, «Причины отказа»=52, кнопка «Добавить систему»=15) как «системы» с мусорными «Гкал/ч».
  • Реальная сетка снята из raw jsonb всех 4 публикаций (единообразна): строка col4=='Централизованная система' — имена систем по колонкам j≥6; строка №5 «Резерв мощности источников тепловой энергии» — значения Гкал/ч в тех же колонках.
  • parse_heat_sheet переписан column-aligned: имя = текст с буквой (strip), резерв — из той же колонки через parse_reserve_number; 0.0 сохраняется (честный дефицит), None/текст → скип; нет опорных строк → warning + пусто, не падаем.
  • Ревью прогнало новый парсер против реальной фикстуры 4 публикаций: ЕТК 40665f4f → СТ № 56=0.0 / СТ № 54=3.26 / СТ № 60=11.28; Екатеринбургэнерго → 62.198/0/0; остальные — честные нули. Точное совпадение.
  • Post-merge: вычистить текущие 27 мусорных строк (DELETE FROM heat_system_reserves) и перезапустить load_heat_reserves() на проде.

Test plan

  • pytest tests/test_eias_heat_loader.py — 16 passed (тесты пересобраны из реальной сетки + регрессия на рубрики анкеты)
  • ruff clean; парсер валидирован против прод-fixture всех 4 публикаций
  • post-merge: DELETE мусора + rerun лоадера + verify honest rows

Refs #2119

## Summary - Первый прод-прогон тепло-лоадера (после #2172) распарсил МУСОР: defensive-эвристика «правейшее число строки» захватила служебную колонку шаблона ЕИАС `Flag_Row_Size` (высоты строк) — в `heat_system_reserves` попали рубрики анкеты («Количество заявок»=74, «Причины отказа»=52, кнопка «Добавить систему»=15) как «системы» с мусорными «Гкал/ч». - Реальная сетка снята из raw jsonb всех 4 публикаций (единообразна): строка `col4=='Централизованная система'` — имена систем по колонкам j≥6; строка №5 «Резерв мощности источников тепловой энергии» — значения Гкал/ч в тех же колонках. - `parse_heat_sheet` переписан column-aligned: имя = текст с буквой (strip), резерв — из той же колонки через `parse_reserve_number`; **0.0 сохраняется** (честный дефицит), None/текст → скип; нет опорных строк → warning + пусто, не падаем. - Ревью прогнало новый парсер против реальной фикстуры 4 публикаций: ЕТК 40665f4f → СТ № 56=0.0 / СТ № 54=3.26 / СТ № 60=11.28; Екатеринбургэнерго → 62.198/0/0; остальные — честные нули. Точное совпадение. - Post-merge: вычистить текущие 27 мусорных строк (`DELETE FROM heat_system_reserves`) и перезапустить `load_heat_reserves()` на проде. ## Test plan - [x] `pytest tests/test_eias_heat_loader.py` — 16 passed (тесты пересобраны из реальной сетки + регрессия на рубрики анкеты) - [x] ruff clean; парсер валидирован против прод-fixture всех 4 публикаций - [ ] post-merge: DELETE мусора + rerun лоадера + verify honest rows Refs #2119
bot-backend added 1 commit 2026-07-02 17:40:20 +00:00
fix(eias-heat): column-align ТП sheet parse to real grid (drop Flag_Row_Size trap)
All checks were successful
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 1m47s
CI / backend-tests (pull_request) Successful in 14m6s
497f992c67
parse_heat_sheet брал правейшее число строки — на проде это оказалась
служебная колонка шаблона ЕИАС Flag_Row_Size (высоты строк), и в
heat_system_reserves попали рубрики анкеты («Количество заявок»=74,
кнопка «Добавить систему»=15) как тепло-системы.

Переписан column-aligned по реальной сетке (снята из raw всех 4
публикаций): строка «Централизованная система» даёт имена систем по
колонкам j≥6 (текст с буквой), строка №5 «Резерв мощности…» — Гкал/ч
из тех же колонок. Нулевой резерв сохраняется (честный дефицит),
None/текст — скип системы. Тесты пересобраны из реальной сетки ЕТК
(СТ № 56→0.0, СТ № 54→3.26, СТ № 60→11.28) + регрессия на рубрики.
bot-backend merged commit cdc1e03b32 into main 2026-07-02 17:55:16 +00:00
bot-backend deleted branch fix/eias-heat-sheet-grid 2026-07-02 17:55:17 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2176
No description provided.