feat(tradein/avito): per-card ЕКБ гео-фильтр (отсечь padding по России) #1840
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#1840
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/tradein-avito-ekb-filter-room-split"
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?
Проблема (live audit)
avito SERP для редких комбо (4+комн, дорогих) в ЕКБ возвращает мало результатов → Авито добивает выдачу «по всей России» (Москва/Челябинск/Омск/Тюмень...), а парсер глотает их как ЕКБ. Факт по БД:
rooms=4= 11307 листингов, из них ЕКБ только 498 (4%);rooms=3— 44% ЕКБ.rooms=0/1/2чисты (98-100%). Это раздувает 4+ бакет (медленный прогон,upd=745не-ЕКБ за price-бакет) и засоряет БД.На valuation напрямую почти не влияет (92% не-ЕКБ без координат → radius-фильтр их не берёт), но: бессмысленный «4-комн ЕКБ», bloat, медленный 4+ свип.
Фикс — per-card ЕКБ гео-фильтр
app/services/scrapers/avito.py::_parse_html: каждая SERP-карточка несёт свойsource_url(из<a data-marker="item-title" href>). Приsettings.avito_serp_ekb_only=Trueкарточка без/ekaterinburg/в URL дропается (Авитошный padding имеет другие city-slug'и). Консервативно: если city-slug не извлёкся (path-сегмент в{kvartiry,item,catalog,user,api}) — карточка остаётся (не дропаем по ошибке). Лог:dropped N non-EKB cards (padding), M without city-slug kept.avito_serp_ekb_only: bool = True(config.py; ENVAVITO_SERP_EKB_ONLY; False = старое).4/5+ комнаты — УЖЕ разделены (проверено, не трогал)
ROOM_SLUGSуже содержит отдельные«4-комн.»и«5+комн.»;roomsберётся из заголовка карточки (_extract_rooms_from_title), не из бакета → 4/5/6 различаются по факту. Лумпинга нет —rooms=4=11307был чисто не-ЕКБ padding (его и режет гео-фильтр).Тесты
tests/.../test_avito_ekb_geo_filter.py: 4 passed (ЕКБ оставляет, Москва/etc дропает, без city-slug — keep).Эффект
Будущие свипы: 4+ бакет = ~498 ЕКБ вместо 11307 всероссийских → быстрее + чисто, не засоряет.
⚠️ Деплой — ПОСЛЕ завершения текущего avito full_load (рекрейт scraper убьёт идущий прогон). Связано: аудит скрапперов 2026-06-20, #1796.