|
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 7s
CI Trade-In / frontend-checks (pull_request) Has been skipped
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
CI Trade-In / backend-tests (pull_request) Successful in 54s
Root cause: _DEDUP_HOUSE_NO_RE требовал trailing \b после захваченной цифры/литеры. Кириллическая буква и цифра — оба \w, между ними нет word-boundary, поэтому когда avito приклеивает название станции метро прямо к номеру дома без пробела («2Чкаловская11-15 мин. пешком»), матч цифры «2» целиком отменялся, и .search() уезжал вправо до дистанции «11-15» (где дефис даёт настоящую границу), ошибочно принимая «15» за номер дома. Фикс: убрали trailing \b (незачем — \d+ уже жадный), сузили суффикс- литеру условием "это последний word-символ токена" через (?!\w) — не просто "не кириллическая буква", а вообще ЛЮБОЙ word-символ (буква ИЛИ цифра). Первая версия фикса ((?![а-яё]), из первоначального дизайна) ловила метро-кейс, но ломала 4 существующих теста: avito-формат «6к1» (литера корпуса приклеена к цифре без пробела) стал давать house="6к", расходясь с эквивалентным domklik-форматом «6 к1» → "6" — guard_house видел «6к» != «6» и блокировал законный cross-source merge. (?!\w) устраняет и метро-баг, и эту регрессию разом: «6к1» теперь тоже даёт "6". guard_house/union() не тронуты — чистая extraction-фикс, guard уже корректно обрабатывает equal-or-missing house_no. 9 новых тестов (глухие метро-имена: обычное/дефисное/короткое; пин letter-suffix/corpus-slash; partial-capture для глухого corpus-letter; limitation-пин для двух склеенных числовых прогонов; 2 e2e merge/no-merge) + обновлены 2 существующих pinned-ожидания под улучшенное поведение "6к1". |
||
|---|---|---|
| .. | ||
| exporters | ||
| matching | ||
| __init__.py | ||
| account_quota.py | ||
| brand.py | ||
| buildings_query.py | ||
| cache.py | ||
| cian_price_history.py | ||
| cian_session.py | ||
| dadata.py | ||
| estimator.py | ||
| gar_flats_loader.py | ||
| geocoder.py | ||
| house_dedup_merge.py | ||
| house_imv_backfill.py | ||
| house_metadata.py | ||
| image_sanitizer.py | ||
| location_coef.py | ||
| product_handlers.py | ||
| proxy_pool.py | ||
| rosreestr_poll.py | ||
| sber_index.py | ||
| scheduler.py | ||
| scrape_runs.py | ||
| scraper_adapters.py | ||
| scraper_settings.py | ||
| search_query.py | ||
| yandex_address_backfill.py | ||
| yandex_price_history.py | ||
| zhkh_flats_loader.py | ||