Регулярный сбор по Москве и области #3541

Merged
lekss361 merged 1 commit from feat/msk-sweep-schedules into main 2026-09-16 19:25:10 +00:00
Owner

Зачем

Корпус 77/50 жил разовой загрузкой: всё собрано 10-12.09.2026. При LISTINGS_FRESH_DAYS = 14 свежих объявлений не осталось бы с 26-27.09, после чего оценка по этим регионам деградировала бы до релаксированного тира, а коэффициент asking→sold перестал бы переписываться. Регионы при этом отдаются тестировщикам.

Кода не требовалось: якоря, гео-профили и региональная параметризация слиты в #3533 — не было только строк расписания.

Что внутри

Шесть строк: avito / cian / yandex × Москва / область.

  • Слаги moskva и moskovskaya_oblast уже в CITY_ANCHORS — проверено на проде: 25 и 44 якоря. Wildcard-хендлеры *_city_sweep_* резолвят их на те же джобы, что ЕКБ.
  • radius_m задан явно: 8000 м по Москве, 10000 м по области — ровно те, на которых мерили покрытие сетки (73.8% → 95.2% массы лотов области). Дефолт джобы 1500 м обрушил бы покрытие, ради которого якоря подбирались.
  • newbuilding_only: false у cian — дефолт джобы true, а корпус нужен вторичный.
  • Окна 16-23 UTC — наименее занятые (по одной строке на час против 5-7 в ночных).
  • Нагрузка на такт: ≈72 минуты раз в 3 суток.

Строки включены сразу, в отличие от seed-строк 289/302, где включение оставляли отдельным решением. Причина — дата истечения корпуса; решение принято явно.

Применено на проде

Миграция уже прогнана (сухой прогон с ROLLBACK → чистый, затем COMMIT). Планировщик подхватил строки немедленно, так как next_run_at был пуст.

Результат первого прогона: avito Москва 294 найдено / 160 новых, yandex Москва 651/35, yandex область 648/41 — сбор работает.

Оба cian-прогона упали мгновенно с no proxy available for provider='cian' (pool empty in prod). Это не дефект расписания: в пуле 4 живых прокси из 8, и лишь два универсальных (id 13, 14) — остальные четыре выключены с конца августа с 313-351 подряд неудач. Шесть свипов стартовали одновременно, универсальные разобрали avito и yandex. Будущие прогоны разнесены по времени (16:18, 18:45, 19:09, 19:34, 20:22, 21:36 UTC) с запасом на длительность, так что столкновение было разовым эффектом вставки. Тонкий пул прокси остаётся отдельным риском.

Что НЕ заведено

DomClick — ≈23% корпуса обоих регионов. У него нет wildcard-хендлера (domclick_city_sweep_* отсутствует в _default_kit_handlers), а единственная возможная строка source='domclick_city_sweep' занята Екатеринбургом. Нужна правка кода, отдельной задачей.

Test plan

  • Слаги и радиусы сверены с CITY_ANCHORS на проде: 25 / 44 якоря, 8000 / 10000 м
  • _resolve_region_code принимает 77 и 50
  • Сухой прогон миграции с ROLLBACK — INSERT 0 6, без ошибок
  • Живой прогон после применения — три из шести свипов собирают, причина падения двух установлена
  • Контроль 19.09: все шесть должны отработать по своим окнам без коллизии за прокси
## Зачем Корпус 77/50 жил разовой загрузкой: всё собрано 10-12.09.2026. При `LISTINGS_FRESH_DAYS = 14` свежих объявлений не осталось бы с **26-27.09**, после чего оценка по этим регионам деградировала бы до релаксированного тира, а коэффициент asking→sold перестал бы переписываться. Регионы при этом отдаются тестировщикам. Кода не требовалось: якоря, гео-профили и региональная параметризация слиты в #3533 — не было только строк расписания. ## Что внутри Шесть строк: avito / cian / yandex × Москва / область. - Слаги `moskva` и `moskovskaya_oblast` уже в `CITY_ANCHORS` — проверено на проде: 25 и 44 якоря. Wildcard-хендлеры `*_city_sweep_*` резолвят их на те же джобы, что ЕКБ. - `radius_m` задан **явно**: 8000 м по Москве, 10000 м по области — ровно те, на которых мерили покрытие сетки (73.8% → 95.2% массы лотов области). Дефолт джобы 1500 м обрушил бы покрытие, ради которого якоря подбирались. - `newbuilding_only: false` у cian — дефолт джобы `true`, а корпус нужен вторичный. - Окна 16-23 UTC — наименее занятые (по одной строке на час против 5-7 в ночных). - Нагрузка на такт: ≈72 минуты раз в 3 суток. Строки включены сразу, в отличие от seed-строк 289/302, где включение оставляли отдельным решением. Причина — дата истечения корпуса; решение принято явно. ## Применено на проде Миграция уже прогнана (сухой прогон с ROLLBACK → чистый, затем COMMIT). Планировщик подхватил строки немедленно, так как `next_run_at` был пуст. Результат первого прогона: avito Москва 294 найдено / 160 новых, yandex Москва 651/35, yandex область 648/41 — сбор работает. **Оба cian-прогона упали мгновенно** с `no proxy available for provider='cian' (pool empty in prod)`. Это не дефект расписания: в пуле 4 живых прокси из 8, и лишь два универсальных (id 13, 14) — остальные четыре выключены с конца августа с 313-351 подряд неудач. Шесть свипов стартовали одновременно, универсальные разобрали avito и yandex. Будущие прогоны разнесены по времени (16:18, 18:45, 19:09, 19:34, 20:22, 21:36 UTC) с запасом на длительность, так что столкновение было разовым эффектом вставки. Тонкий пул прокси остаётся отдельным риском. ## Что НЕ заведено DomClick — ≈23% корпуса обоих регионов. У него нет wildcard-хендлера (`domclick_city_sweep_*` отсутствует в `_default_kit_handlers`), а единственная возможная строка `source='domclick_city_sweep'` занята Екатеринбургом. Нужна правка кода, отдельной задачей. ## Test plan - [x] Слаги и радиусы сверены с `CITY_ANCHORS` на проде: 25 / 44 якоря, 8000 / 10000 м - [x] `_resolve_region_code` принимает 77 и 50 - [x] Сухой прогон миграции с ROLLBACK — `INSERT 0 6`, без ошибок - [x] Живой прогон после применения — три из шести свипов собирают, причина падения двух установлена - [ ] Контроль 19.09: все шесть должны отработать по своим окнам без коллизии за прокси
lekss361 added 1 commit 2026-09-16 18:59:35 +00:00
feat(scraper): регулярный сбор по Москве и области
All checks were successful
CI Trade-In / changes (pull_request) Successful in 11s
CI / changes (pull_request) Successful in 14s
CI Trade-In / browser-tests (pull_request) Has been skipped
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 4m59s
84dde77450
Корпус 77/50 жил разовой загрузкой: всё собрано 10-12.09. При
LISTINGS_FRESH_DAYS=14 свежих объявлений не осталось бы с 26-27.09, после
чего оценка по этим регионам деградировала бы до релаксированного тира, а
коэффициент asking->sold перестал бы переписываться. Кода не требовалось:
якоря, гео-профили и региональная параметризация слиты в #3533, не было
только строк расписания.

Шесть строк: avito/cian/yandex × Москва/область. Слаги moskva и
moskovskaya_oblast уже в CITY_ANCHORS (25 и 44 якоря), wildcard-хендлеры
резолвят их на те же джобы, что ЕКБ.

radius_m задан явно — 8000 по Москве и 10000 по области, ровно те, на
которых мерили покрытие сетки. Дефолт джобы 1500 м обрушил бы покрытие,
ради которого якоря подбирались. newbuilding_only=false у cian: дефолт
джобы true, а корпус нужен вторичный.

Строки включены сразу, в отличие от seed'ов 289/302 — иначе корпус
истекает раньше, чем кто-то вернётся к вопросу.

DomClick (≈23% корпуса обоих регионов) не заведён: у него нет
wildcard-хендлера, а единственная строка source='domclick_city_sweep'
занята Екатеринбургом. Нужна правка кода, отдельной задачей.
lekss361 merged commit ad239db034 into main 2026-09-16 19:25:10 +00:00
lekss361 deleted branch feat/msk-sweep-schedules 2026-09-16 19:25:10 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#3541
No description provided.