fix(eias-heat): ссылка TemplatePrinter из onclick + период «N кв. YYYY» (#2119 B2) #2172

Merged
bot-backend merged 1 commit from fix/eias-heat-card-parse into main 2026-07-02 17:24:27 +00:00
Collaborator

Summary

  • Прод-прогон тепло-лоадера из PR #2165 вернул 0 публикаций для обеих организаций (ЕТК, Екатеринбургэнерго): реальная разметка карточки ri.eias.ru не совпала с ожиданиями парсера.
  • Живой HTML (снят с прода): ссылка на выгрузку живёт в JS onclick="openTemplateDialog('https://ri-loader.eias.ru/TemplatePrinter.aspx?reg=…&guid=…&id=…', …)" при href="#", а период в строке грида — «1 кв. 2026 года» (не «1 квартал 2026»).
  • Фикс: _PUB_HREF_RE матчит URL TemplatePrinter где угодно в <tr>-чанке (onclick + прежний href-вид); html.unescape чанка перед поиском (&amp;guid=&guid=); _QUARTER_RE поддерживает «N кв. YYYY» / «N кв YYYY»; дедуп публикаций по (guid, id) — на проде каждая публикация повторяется ~3 раза (строки по видам деятельности), без дедупа один ZIP качался бы многократно.
  • Новые регэкспы прогнаны против живого HTML обеих карточек: ЕТК — 50 ссылок → свежайший 2026-Q1, ЕЭ — 39 → 2026-Q1. Юнит-тест воспроизводит точную прод-разметку (onclick, &amp;, ИНН в тексте, «1 кв. 2026 года»).

Test plan

  • pytest tests/test_eias_heat_loader.py — 16 passed (3 новых теста)
  • ruff clean, регэкспы валидированы на живом HTML с прода
  • post-merge: load_heat_reserves() на проде → publications>0, parsed>0 для обеих организаций

Refs #2119

## Summary - Прод-прогон тепло-лоадера из PR #2165 вернул 0 публикаций для обеих организаций (ЕТК, Екатеринбургэнерго): реальная разметка карточки ri.eias.ru не совпала с ожиданиями парсера. - Живой HTML (снят с прода): ссылка на выгрузку живёт в JS `onclick="openTemplateDialog('https://ri-loader.eias.ru/TemplatePrinter.aspx?reg=…&guid=…&id=…', …)"` при `href="#"`, а период в строке грида — «1 кв. 2026 года» (не «1 квартал 2026»). - Фикс: `_PUB_HREF_RE` матчит URL TemplatePrinter где угодно в `<tr>`-чанке (onclick + прежний href-вид); `html.unescape` чанка перед поиском (`&amp;guid=` → `&guid=`); `_QUARTER_RE` поддерживает «N кв. YYYY» / «N кв YYYY»; дедуп публикаций по (guid, id) — на проде каждая публикация повторяется ~3 раза (строки по видам деятельности), без дедупа один ZIP качался бы многократно. - Новые регэкспы прогнаны против живого HTML обеих карточек: ЕТК — 50 ссылок → свежайший 2026-Q1, ЕЭ — 39 → 2026-Q1. Юнит-тест воспроизводит точную прод-разметку (onclick, `&amp;`, ИНН в тексте, «1 кв. 2026 года»). ## Test plan - [x] `pytest tests/test_eias_heat_loader.py` — 16 passed (3 новых теста) - [x] ruff clean, регэкспы валидированы на живом HTML с прода - [ ] post-merge: `load_heat_reserves()` на проде → publications>0, parsed>0 для обеих организаций Refs #2119
bot-backend added 1 commit 2026-07-02 17:08:34 +00:00
fix(eias-heat): parse TemplatePrinter link from onclick + «N кв. YYYY» period
All checks were successful
CI / changes (pull_request) Successful in 8s
CI / openapi-codegen-check (pull_request) Successful in 1m56s
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Successful in 14m31s
a5e8208fcb
Карточка PublicDisclosureInfoOrg.aspx на проде держит ссылку в JS
onclick=openTemplateDialog(...) при href="#" (не в href), амперсанды
HTML-энкожены, а период — «1 кв. 2026 года». Старые регэкспы давали
0 публикаций для обеих организаций (PR #2165).

- _PUB_HREF_RE: матч URL TemplatePrinter где угодно в чанке (onclick + href)
- extract_publications: html.unescape чанка перед поиском (&amp;guid=)
- _QUARTER_RE: поддержка «N кв. YYYY» / «N кв YYYY» помимо «N квартал YYYY»
- дедуп публикаций по (guid, id) — одна публикация в 3 строках грида
- тесты: реальная onclick-форма + дедуп + новые кейсы _quarter_from_text
bot-backend merged commit 15224da3b5 into main 2026-07-02 17:24:27 +00:00
bot-backend deleted branch fix/eias-heat-card-parse 2026-07-02 17:24:27 +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#2172
No description provided.