gendesign/tradein-mvp/backend
bot-backend 47880bfab6
All checks were successful
CI / changes (pull_request) Successful in 10s
CI Trade-In / changes (pull_request) Successful in 10s
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 1m42s
fix(tradein/scrapers): wire proxy_pool into Avito legacy pipeline, rotate on ban (#2202)
Боевой оркестратор (scrape_pipeline.py) читал только статический
settings.scraper_proxy_url — ни один боевой скрейпер не использовал
proxy_pool/scrape_proxies (git grep "acquire(" = 0 хитов). Бан на общем
IP выносил avito+cian+yandex+domklik разом.

Подключён pool-aware proxy acquisition/rotation в 3 curl-режим Avito
entry points (run_avito_pipeline, run_avito_city_sweep,
run_avito_newbuilding_sweep), за флагом use_proxy_pool_curl (default
False — ship-dark, поведение не меняется пока явно не включат):
- _pool_proxy_dict(): health-filtered acquire() lease, fallback на
  статический прокси при пустом пуле/ошибке/флаге off.
- _rotate_pool_proxy(): на бан — mark_health(ok=False) → acquire()
  замены → ТОЛЬКО ПОСЛЕ release(current_lease). Порядок принципиален:
  release ДО acquire() позволял пулу молча вернуть тот же только что
  забаненный прокси (один бан не достигает MAX_CONSECUTIVE_FAILS=3,
  leased_by IS NULL фильтр не исключал бы его) — найдено на pre-push
  review, воспроизведено и закрыто регрессионным тестом с CURRENT id
  ниже GOOD id (оригинальный тест проходил случайно из-за id tie-break).
- run_id прокинут в acquire() на обоих sweep call sites — scrape_proxies
  .leased_by несёт реальный run id для диагностики, не NON_RUN_LEASE_MARKER.

Cian/Yandex/DomClick (browser-mode, отдельный сервис) и
run_avito_full_load (использует AvitoScraper напрямую, много вызывающих
кода за пределами scrape_pipeline) — вне скоупа, задокументировано как
follow-up в PR description.

Refs #2202
2026-07-04 00:45:25 +03:00
..
app fix(tradein/scrapers): wire proxy_pool into Avito legacy pipeline, rotate on ban (#2202) 2026-07-04 00:45:25 +03:00
data/sql feat(tradein): location-coef MVP через FDW-мост к OSM POI Птицы (#2045) 2026-07-03 23:44:55 +03:00
scripts feat(tradein/estimator): сегментная поправка headline+выкуп по ценовому бэнду за флагом (#2255) (#2293) 2026-07-03 18:43:38 +00:00
tests fix(tradein/scrapers): wire proxy_pool into Avito legacy pipeline, rotate on ban (#2202) 2026-07-04 00:45:25 +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 ci(tradein): pre-merge гейт — backend pytest + frontend type-check/lint (#2208) (#2220) 2026-07-02 19:56:22 +00:00