gendesign/tradein-mvp/backend/tests/tasks
bot-backend 8cdb195e18
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 9s
CI Trade-In / frontend-checks (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 4m45s
CI / backend-tests (pull_request) Has been skipped
fix(tradein/geocode): бюджет прогона не был потолком — проверялся только между батчами
`run_geocode_missing_listings` рекламирует `budget_sec` как максимальное время
прогона, но проверка стояла после возврата из батча. Внутри батча цикл шёл по
всем 200 адресам и часов не смотрел, то есть фактический потолок был
`budget_sec + один полный батч`.

Замер: прогон 5017 (27.08, `budget_sec=1800`) шёл 3150 с — 175 % бюджета, и
вышел не по бюджету, а по дренажу: бюджетная ветка за 52 минуты не выполнилась
ни разу.

Пока адрес стоил ~1.9 с это терялось в шуме. После общего ограничителя темпа
Nominatim (#2953) средняя цена 4.5 с, а на трудном хвосте (tier-1 + до 4
typo-вариантов под паузой 1 с, плюс retry×3) — до 33 с. Полный батч из таких
адресов уезжает на ~110 минут поверх бюджета, при окне расписания 06:00–09:00.

Дедлайн теперь передаётся В батч и проверяется на каждом адресе. Оборванный
батч — штатный исход: `geocode_tried_at` проставлен только у обработанных пар,
остальные попадут в выборку следующего прогона.

Отдельный флаг `budget_exhausted` нужен потому, что `addresses_total` на
оборванном батче равен размеру ВЫБОРКИ (== batch_size) — ветка дренажа
`addresses_total < batch_size` не сработала бы, и обёртка крутила бы цикл
дальше. Тест на это падает без флага (проверено снятием ветки).

Тесты: 5 новых, все три несущие проверки падают без соответствующей правки.
37 passed локально.

Closes #3151
2026-08-27 19:10:53 +03:00
..
__init__.py fix(tradein): geocode backfill + remove Avito exclusion from estimator (#490) 2026-05-23 20:03:48 +00:00
test_avito_detail_backfill.py test(tradein/avito): тест закреплял отсутствие проводки пула 2026-08-27 16:16:26 +03:00
test_backfill_house_coords_from_listings.py fix(tradein/houses): вернуть координаты объявлений в дом, когда объявления согласны (#2771) (#2780) 2026-08-07 09:08:06 +00:00
test_backfill_listings_coords_geoportal.py fix(tradein/geocode): прошить city_hint в deals-скрипт + развести счётчики гейта (#2603) 2026-08-05 17:36:07 +05:00
test_cadastral_geo_match.py refactor(tradein/scheduler): удалить legacy scheduler_loop + scraper-scheduling, kit единственный путь (#2397 Part C) 2026-07-04 13:00:30 +03:00
test_domclick_detail_backfill.py fix(tradein/scraper): detail-backfill с нулём обогащений перестаёт называться успехом (#2674) (#2695) 2026-08-06 05:59:37 +00:00
test_geocode_missing.py fix(tradein/geocode): бюджет прогона не был потолком — проверялся только между батчами 2026-08-27 19:10:53 +03:00
test_newbuilding_enrich_backfill.py fix(tradein/newbuilding): счётчики записи различают вставку и обновление (#2807) (#2809) 2026-08-10 08:50:56 +00:00
test_yandex_address_backfill.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_yandex_detail_backfill.py fix(tradein/scrapers): три прод-пути остались на chrome120, пока kit ушёл на chrome146 2026-08-27 18:18:05 +03:00
test_yandex_newbuilding_sweep.py refactor(tradein/tasks): yandex_newbuilding_sweep на kit + config= (#2397 Part D5) 2026-07-04 15:18:40 +03:00