fix(scrapers): scope+stem domrf status classification (#1609) #1686

Merged
lekss361 merged 1 commit from fix/domrf-status-classify-1609 into main 2026-06-17 17:55:42 +00:00
Owner

Проблема (#1609)

domrf_catalog.py матчил первое status-слово во ВСЁМ HTML → «в продаже» из nav/header ловилось раньше реального бейджа → проданные объекты классифицировались как free. Плюс word-form mismatch продано/продана.

Решение

3-уровневая экстракция: (1) CSS badge-класс, (2) близость к лейблу «Статус», (3) приоритетный скан блоков (sold/reserved бьёт free). Морфология: продан[аоы]?/реализован…/забронирован…/свободн… + EN.

Verify

ruff clean; pytest -k domrf84 passed, 6 skipped (+31 тест на фикстурах).

Closes #1609

## Проблема (#1609) `domrf_catalog.py` матчил первое status-слово во ВСЁМ HTML → «в продаже» из nav/header ловилось раньше реального бейджа → проданные объекты классифицировались как free. Плюс word-form mismatch продано/продана. ## Решение 3-уровневая экстракция: (1) CSS badge-класс, (2) близость к лейблу «Статус», (3) приоритетный скан блоков (sold/reserved бьёт free). Морфология: `продан[аоы]?`/`реализован…`/`забронирован…`/`свободн…` + EN. ## Verify `ruff` clean; `pytest -k domrf` → **84 passed, 6 skipped** (+31 тест на фикстурах). Closes #1609
lekss361 added 1 commit 2026-06-17 17:45:53 +00:00
fix(scrapers): scope+stem domrf status classification, fix продано/продана mismatch (#1609)
Some checks failed
CI / changes (push) Successful in 8s
CI / changes (pull_request) Successful in 7s
CI / backend-tests (push) Has been skipped
CI / openapi-codegen-check (push) Has been skipped
CI / frontend-tests (push) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 1m39s
CI / backend-tests (pull_request) Failing after 8m48s
4f0cff92ec
Replace whole-HTML re.search for status with a 3-level block-scoped strategy:
1. CSS badge classes (status/badge/tag/chip/label) — highest precision.
2. Proximity to block labelled «Статус» via _find_text_near.
3. Full blocks scan where sold/reserved keywords always beat free —
   preventing «в продаже» from nav/similar-flats sections from
   misclassifying sold flats as free.

Add _STATUS_KW_RE and _classify_status_kw at module level with full
morphological coverage: продан/продана/продано, реализован[аоы]?,
забронирован[аоы]?, свободн[аоы]?.

Add 31 tests in test_domrf_catalog_parse.py covering all three
extraction levels plus regression for fem. word-form «Квартира продана».
lekss361 merged commit 9a0ca9336f into main 2026-06-17 17:55:42 +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#1686
No description provided.