gendesign/tradein-mvp/backend
bot-backend 19a335f4de fix(tradein/scraper-kit): бакет в done_buckets только если каждая фаза дала удачу (#3415)
cian_city_sweep 6179 (06.09) — `failed` по honest-status «фаза 'houses' отказала
полностью — 30 из 30», но все пять якорей записаны в counters.done_buckets.
Прогон 6276 (07.09) унаследовал точку, пропустил все якоря и отчитался `done` с
houses_attempted=0, lots_fetched=0 — зелёный по построению: фаза не исполнялась.
Из-за этого фикс #3396 (houses через пул прокси) простоял на проде сутки, ни разу
не отработав.

Корень: отметка «якорь пройден» опиралась на поток управления (исключение/таймаут
→ continue), а фаза отказывает и БЕЗ исключения — fetch_newbuilding возвращает
None, растёт только счётчик. _bucket_phase_totally_failed сверяет прирост пары
X_attempted/X_failed за якорь (та же конвенция, что у runs._phase_totally_failed,
но порог одна попытка, а не три: здесь решается «собирать ли заново», и цена
ошибок несимметрична).

Форма чекпоинта не менялась — плоский список имён якорей: его читают ещё три
свипа и scheduler._resume_decision, а ключ `bucket:phase` потребовал бы новых
читателей ради того же решения; резюм со старой точкой работает как прежде.

Тот же гейт — в run_avito_city_sweep (та же схема, отдельная функция; прод-следа
за 45 суток у него нет, у cian — 4 прогона). Ветка «houses DB query failed» теперь
растит houses_attempted вместе с houses_failed: пара attempted=0/failed=N не
видна ни run-level правилу, ни гейту бакета.

Соседи без правки: yandex combo-чекпоинт (единица пишется SERP-слоем до фазы,
пробел покрывает yandex_address_backfill, 0 прогонов на проде), domclick (одна
фаза), full-load'ы (бакет = SERP-страница, detail тянется из БД, не из бакета).

Closes #3415
2026-09-07 16:47:08 +05:00
..
app chore(#3197): cian-login — без холостой аренды и ложного отказа (/login сайдкара override не берёт); честные докстринги 2026-09-06 17:48:29 +05:00
data/sql feat(tradein/proxy): прогон знает свой узел, а снятый бан перестаёт стирать историю (#3404) 2026-09-06 13:05:20 +03:00
scripts бэктест: режим выборки вразброс — ORDER BY id DESC садится на несколько улиц 2026-08-31 11:28:11 +05:00
tests fix(tradein/scraper-kit): бакет в done_buckets только если каждая фаза дала удачу (#3415) 2026-09-07 16:47:08 +05:00
.dockerignore feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
Dockerfile feat(tradein): версионирование продукта — единый источник, подвал, PDF, /versions (#2824) 2026-08-10 16:00:54 +00:00
pyproject.toml feat(observability): /metrics в обоих бэкендах — счётчики, задержка, дашборд 2026-08-26 11:30:18 +03:00