gendesign/tradein-mvp/backend
bot-backend 9a83b79d91
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
fix(tradein/estimator): дом «2» вместо «15» при глухом названии станции метро в avito-адресе (#2423)
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".
2026-07-04 18:36:10 +03:00
..
app fix(tradein/estimator): дом «2» вместо «15» при глухом названии станции метро в avito-адресе (#2423) 2026-07-04 18:36:10 +03:00
data/sql chore(tradein/proxy-pool): добавить domclick в provider_affinity CHECK (residential ASocks для #2000) 2026-07-04 17:21:07 +03:00
scripts feat(tradein/scraper-kit): migrate admin.py debug routes + domclick ingest to kit (#2305) 2026-07-04 00:27:01 +03:00
tests fix(tradein/estimator): дом «2» вместо «15» при глухом названии станции метро в avito-адресе (#2423) 2026-07-04 18:36:10 +03:00
.dockerignore feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
Dockerfile chore(scraper-kit): docker-context wiring + restore backend workspace dep (#2137) 2026-07-02 14:21:38 +00:00
pyproject.toml fix(tradein/pdf): честный embedded-шрифт (PT Sans/PT Serif) + matplotlib-график вместо div (#2427) 2026-07-04 14:39:37 +00:00