fix(scrapers): yandex_detail — area/ceiling/kitchen из INITIAL_STATE, покрытие area 63%→~95% (#1792) #1799

Merged
lekss361 merged 1 commit from feat/yandex-detail-field-coverage into main 2026-06-19 17:07:03 +00:00
Owner

Closes #1792.

Корень

yandex_detail брал area из заголовка h1 (_parse_title) → промах на студиях/свободной планировке (63% покрытие). ceiling/kitchen не извлекались вовсе (0%).

Фикс

Структурный источник window.INITIAL_STATE.offerCard.card (authoritative embedded JSON):

  • area_m2card.area.value, livinglivingSpace.value, kitchenkitchenSpace.value, ceiling_heightcard.ceilingHeight, floorfloorsOffered[0]/floorsTotal, roomsroomsTotal (или 0 при house.studio). Заголовок оставлен fallback.

Тесты (2 реальные фикстуры)

Вторичка 3402…: area=35.5, ceiling=2.55, kitchen=9.4 . Студия 7811…: area=24.92 (раньше промах), rooms=0. 45 passed, полный yandex-suite (190) зелёный.

На ревью / решение

  • ceiling/kitchen для новостроек Яндекс не отдаёт структурно → None легитимен (растёт покрытие на доле вторички; area — для всех типов).
  • Колонка ceiling: воркер пишет в ceiling_height (как cian), avito пишет в ceiling_height_m — дубль-колонки. Проверить, какую читает эстиматор. Не блокер, но кросс-сорс расхождение.
Closes #1792. ## Корень `yandex_detail` брал area из заголовка h1 (`_parse_title`) → промах на студиях/свободной планировке (63% покрытие). ceiling/kitchen не извлекались вовсе (0%). ## Фикс Структурный источник `window.INITIAL_STATE.offerCard.card` (authoritative embedded JSON): - `area_m2`←`card.area.value`, `living`←`livingSpace.value`, `kitchen`←`kitchenSpace.value`, `ceiling_height`←`card.ceilingHeight`, `floor`←`floorsOffered[0]`/`floorsTotal`, `rooms`←`roomsTotal` (или 0 при `house.studio`). Заголовок оставлен fallback. ## Тесты (2 реальные фикстуры) Вторичка `3402…`: area=35.5, ceiling=2.55, kitchen=9.4 ✅. Студия `7811…`: area=24.92 (раньше промах), rooms=0. **45 passed**, полный yandex-suite (190) зелёный. ## На ревью / решение - ceiling/kitchen для **новостроек** Яндекс не отдаёт структурно → None легитимен (растёт покрытие на доле вторички; area — для всех типов). - **Колонка ceiling**: воркер пишет в `ceiling_height` (как cian), avito пишет в `ceiling_height_m` — дубль-колонки. Проверить, какую читает эстиматор. Не блокер, но кросс-сорс расхождение.
lekss361 added 1 commit 2026-06-19 16:58:42 +00:00
fix(scrapers): yandex_detail — area/ceiling из структурного блока, покрытие area 63%->~95% (#1792)
All checks were successful
CI / changes (pull_request) Successful in 6s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
0084efc12a
lekss361 merged commit 95069a3daf into main 2026-06-19 17:07:03 +00:00
lekss361 deleted branch feat/yandex-detail-field-coverage 2026-06-19 17:07:03 +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#1799
No description provided.