fix(site-finder): ГРС-парсер переписан под реальную структуру таблицы ГТЕ #2145

Merged
bot-backend merged 1 commit from fix/grs-parser-real-table into main 2026-07-02 14:45:43 +00:00
Collaborator

3-я итерация ГРС-лоадера (после SSL-фиксов #2124/#2125)

Старый header-per-column парсер дал rows=0 на живой таблице. Реальная структура снята с прода (350 строк): caption-строка → asof «по состоянию на 01.06.2026» → заголовки (строка 2) → суб-заголовки уведомления + нумерация → регионы-разделители (single-cell «СВЕРДЛОВСКАЯ ОБЛАСТЬ») → данные: full n=13 (idx 2=имя, 3=проектная, 4=загрузка, 5=объём по ТУ, 6=свободная, 7=«(2 %)», 8-10=уведомление) и continuation n=7 (доп. выход ГРС со сдвигом).

Фикс

  • Header-детект по «наименование»+«проектн»; фиксированные индекс-карты full/continuation; gate по текущему региону («свердлов»); «(выход №N)» → output_name (числовой «(5)» остаётся в имени); «(96 %)» → 96.0 (знак/ноль сохраняются); уведомление → upgrade_due (« · »-join Основание/Срок/Параметры); объём по ТУ → raw (без миграции); asof пишется в upsert (колонка в 181 есть).
  • Тест-fixture повторяет реальную разметку (вкл. хитрые строки нумерации/суб-заголовков — ревьюер проверил, что они отсекаются регион-гейтом). 27 тестов зелёные, ruff/psycopg3-guard чисты.
  • Ревью: APPROVE (minor: junk-строка n=5-9 после регион-сепаратора — в реальной разметке не встречается, raw всё сохраняет).

После merge+deploy — прогон на проде: ожидаем свердловский блок (~50 ГРС: «ГРС Арамиль: свободно 1,205 из 50» и т.д.) → блок «ГАЗ» на ПТИЦЕ оживает.

## 3-я итерация ГРС-лоадера (после SSL-фиксов #2124/#2125) Старый header-per-column парсер дал **rows=0** на живой таблице. Реальная структура снята с прода (350 строк): caption-строка → asof «по состоянию на 01.06.2026» → заголовки (строка 2) → суб-заголовки уведомления + нумерация → **регионы-разделители** (single-cell «СВЕРДЛОВСКАЯ ОБЛАСТЬ») → данные: full n=13 (idx 2=имя, 3=проектная, 4=загрузка, 5=объём по ТУ, 6=**свободная**, 7=«(2 %)», 8-10=уведомление) и continuation n=7 (**доп. выход** ГРС со сдвигом). ## Фикс - Header-детект по «наименование»+«проектн»; фиксированные индекс-карты full/continuation; gate по текущему региону («свердлов»); «(выход №N)» → `output_name` (числовой «(5)» остаётся в имени); «(96 %)» → 96.0 (знак/ноль сохраняются); уведомление → `upgrade_due` (« · »-join Основание/Срок/Параметры); объём по ТУ → raw (без миграции); `asof` пишется в upsert (колонка в 181 есть). - Тест-fixture повторяет реальную разметку (вкл. хитрые строки нумерации/суб-заголовков — ревьюер проверил, что они отсекаются регион-гейтом). **27 тестов зелёные**, ruff/psycopg3-guard чисты. - Ревью: ✅ APPROVE (minor: junk-строка n=5-9 после регион-сепаратора — в реальной разметке не встречается, raw всё сохраняет). После merge+deploy — прогон на проде: ожидаем свердловский блок (~50 ГРС: «ГРС Арамиль: свободно 1,205 из 50» и т.д.) → блок «ГАЗ» на ПТИЦЕ оживает.
bot-backend added 1 commit 2026-07-02 14:29:31 +00:00
fix(site-finder): ГРС-парсер переписан под реальную структуру таблицы ГТЕ
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 1m55s
CI / backend-tests (pull_request) Successful in 14m24s
930630c2cf
3-я итерация: старый header-per-column парсер давал rows=0. Реальная структура
(снята с прода): caption → asof «по состоянию на DD.MM.YYYY» → header-строка
(детект «наименование»+«проектн») → суб-заголовки/нумерация → регионы-разделители
(single-cell) → data full n=13 / continuation n=7 (доп. выход ГРС со сдвигом).

- Фиксированные индекс-карты full/continuation; gate по текущему региону
  («свердлов»); «(выход №N)» → output_name, числовой «(5)» остаётся в имени;
  «(96 %)» → 96.0 (знак/ноль сохраняются); уведомление → upgrade_due через « · »;
  объём по действующим ТУ → raw (без миграции); asof пишется в upsert.
- Тест-fixture повторяет реальную разметку (вкл. нумерацию и суб-заголовки),
  27 тестов зелёные. Ревью  APPROVE.
bot-backend merged commit 0a6281b6e2 into main 2026-07-02 14:45:43 +00:00
bot-backend deleted branch fix/grs-parser-real-table 2026-07-02 14:45:43 +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#2145
No description provided.