fix(tradein/avito): консолидировать house_type normalizer + актуализировать docstring (#2009) #2340
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#2340
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/tradein-2009-recheck-avito-house-type"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #2009
Исходный DoD-приоритет 1 (house_type + house_catalog_url сохраняются в
save_detail_enrichment) уже был закрыт ранее — PR #2014, коммит4a93a929(2026-06-27), задолго до этого прохода. Живой прод-код это уже неделю делает.Реальный gap, закрытый этим PR (DoD-приоритет 2 — "не дублируй, переиспользуй #2007"):
avito_detail.pyдержал локальный дубль-мэппинг_HOUSE_TYPE_MAP(6 русских лейблов → канон), хотя sharedhouse_type_normalizer.normalize_house_type()(#2007, уже смержен) для этого и существует.parse_detail_htmlнаnormalize_house_type(), удалил локальный_HOUSE_TYPE_MAP.house_type_normalizer.py::_RAW_TO_CANON, третьим источником рядом с yandex SCREAMING_SNAKE и cian camelCase.DoD-приоритет 3 (total_floors_house/elevators/concierge/closed_yard) — подтверждено by-design, НЕ пропуск: эти поля уже имеют канонический источник (
avito_houses.pyStage 2c пишет их напрямую вhouses, листинг линкуется черезhouse_url); дублировать вlistingsнамеренно не стали (избегаем two-sources-of-truth).Проверено: ruff чисто, 75 relevant tests + широкий scoped run (
avito/house_type) 485 passed, полный backend suite 3206 passed (1 pre-existing unrelated failure, репродуцирован на чистом main тоже — не регрессия этого PR). code-reviewer APPROVE.Known minor drift (не блокирует):
tradein-mvp/packages/scraper-kit/содержит отдельную копиюhouse_type_normalizer.py— avito-вокабуляр добавлен только в app-level версию (scraper-kit пока не имеет avito_detail эквивалента, dormant migration track #2277).