fix(tradein/scraper): per-city SERP location for oblast city-sweep (#12) #2525
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#2525
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/scraper-city-location-leak"
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?
Проблема
get_city_anchors('nizhniy_tagil')возвращает корректный anchor, НО провайдеры хардкодили локацию ЕКБ мимо anchor'а → city-sweep oblast-города фактически скрейпил Екатеринбург,n_analogs=0./ekaterinburg/в пути URL (4 билдера)target_city_slug(avito_slug) → в путь URL, не только фильтр #2487region=4743(город ЕКБ)city_region_id→region=(subdomainekb.cian.ruобщий для Свердловской обл., не меняется)rgid=559132, lat/lon явно игноритcity_rgid→rgid=Тот же класс, что domclick (EKB через GUID). Анкоры oblast-городов (
CITY_ANCHORS, #B1/#2487) уже были, не хватало per-provider локации SERP-запроса.Изменения
CityLocationdataclass +CITY_LOCATIONS(5 городов Свердловской обл., ID проверены сверкой с гео-API сайтов, откалибровано на эталоне ЕКБ) +get_city_location(); прокинуто вrun_{avito,cian,yandex}_city_sweep._city_seg(), city-slug в путь всех 4 URL-билдеров.city_region_id→region=в_build_url. base_url не тронут.city_rgid→rgid=в_build_url.city_slug=cityв cian/yandex jobs (avito уже был).Данные CITY_LOCATIONS: avito_slug у Каменска =
kamensk-uralskiy(дефис! underscore→404), В.Пышма =verhnyaya_pyshma(kh→h) — берётся явный avito_slug, не сырой city_slug. cian region_id = город (parentId 4612 = область). yandex rgid = город.Back-compat
Все новые параметры default
None→ ЕКБ-поведение byte-identical.run_avito_pipeline/*_full_load/ обычный ЕКБ-sweep создают скрейперы без новых kw → дефолты (ekaterinburg/4743/559132). Не тронуты domclick, estimator, geocoder.Тесты
+9 URL-builder тестов (
test_serp_city_location_urls.py): city-slug vs None-дефолт для avito path / cian region / yandex rgid. Полный backend-suite: 2514 passed (1 pre-existing fail вtest_search_api.py— env-isolation, не связан).Verify (после merge+deploy)
Затем cian/avito Тагила + geocode_missing_listings + re-smoke оценки Н.Тагила (
n_analogs>0).⚠️ В.Пышма yandex
rgid=166366может тянуть агломерацию ЕКБ (~16k listings) — при её включении проверить bbox отдельно.Closes #12.
avito/cian/yandex хардкодили ЕКБ (path /ekaterinburg/, region 4743, rgid 559132) мимо anchor'а oblast-города → city-sweep целевого города скрейпил ЕКБ, n_analogs=0. - pipeline: CityLocation + CITY_LOCATIONS (5 городов Свердловской обл.) + get_city_location; прокинуто в run_{avito,cian,yandex}_city_sweep - avito: target_city_slug (avito_slug) теперь в ПУТЬ URL (4 билдера), не только фильтр #2487 - cian: city_region_id → region= (subdomain ekb.cian.ru общий для области, не меняется) - yandex: city_rgid → rgid= - scheduler: city_slug прокинут в cian/yandex jobs (avito уже был) Все новые параметры default None → ЕКБ-поведение byte-identical (back-compat). Tests: +9 URL-builder тестов; full backend suite 2514 passed.