feat(scheduler): wire house_imv_backfill as scheduled source (#854) #1910

Merged
bot-backend merged 1 commit from feat/imv-backfill-scheduler-854 into main 2026-06-26 07:45:09 +00:00
Collaborator

Подключает уже готовый сервис house_imv_backfill как самостоятельный scheduler-источник → house_imv_evaluations наполняется по расписанию.

  • scheduler.py: trigger_house_imv_backfill_run (зеркало trigger_avito_detail_backfill_run): _claim_runSessionLocal()backfill_house_imv(batch_size/request_delay_sec/only_status, heartbeat) → mark_done/mark_failed + heartbeat (анти-зомби). Зарегистрирован в dispatch.
  • data/sql/132: idempotent seed scrape_schedules (source=house_imv_backfill, окно 18-20 MSK после city-sweep+geocode, next_run_at=завтра, ON CONFLICT DO NOTHING).
  • +14 тестов. 306 passed, ruff clean.

⚠️ Зависимость: бэкфилл реально наполнит данные только при живом avito_imv прокси (#853) — на datacenter-IP без прокси даст 403/transient. Wiring корректен и безопасен (next_run завтра), но enable на проде — после #853.

Refs #854

Подключает уже готовый сервис `house_imv_backfill` как самостоятельный scheduler-источник → `house_imv_evaluations` наполняется по расписанию. - `scheduler.py`: `trigger_house_imv_backfill_run` (зеркало `trigger_avito_detail_backfill_run`): `_claim_run` → `SessionLocal()` → `backfill_house_imv(batch_size/request_delay_sec/only_status, heartbeat)` → mark_done/mark_failed + heartbeat (анти-зомби). Зарегистрирован в dispatch. - `data/sql/132`: idempotent seed `scrape_schedules` (source=house_imv_backfill, окно 18-20 MSK после city-sweep+geocode, next_run_at=завтра, ON CONFLICT DO NOTHING). - +14 тестов. 306 passed, ruff clean. ⚠️ Зависимость: бэкфилл реально наполнит данные только при живом avito_imv прокси (#853) — на datacenter-IP без прокси даст 403/transient. Wiring корректен и безопасен (next_run завтра), но enable на проде — после #853. Refs #854
bot-backend added 1 commit 2026-06-26 07:31:03 +00:00
feat(scheduler): wire house_imv_backfill as scheduled source (#854)
All checks were successful
CI / changes (pull_request) Successful in 6s
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
14798cc07c
The house_imv_backfill service (services/house_imv_backfill.backfill_house_imv)
populates house_imv_evaluations on demand but was never on a schedule, so the
table stayed ~empty on prod. Register it as a standalone scrape_schedules source:

- trigger_house_imv_backfill_run mirrors trigger_avito_detail_backfill_run /
  trigger_yandex_address_backfill_run (_claim_run -> asyncio.create_task -> fresh
  SessionLocal -> add_done_callback). Since the service has no tasks/*-wrapper
  owning the run lifecycle, the trigger finalises scrape_runs itself
  (mark_done/mark_failed) like trigger_refresh_search_matview_run, and passes a
  heartbeat callback so reap_zombies does not kill a long live IMV run (#1363).
- dispatch branch in scheduler_loop routes source=="house_imv_backfill".
- migration 132 seeds an idempotent scrape_schedules row (window 15:00-17:00 UTC,
  after the Avito sweep/full-load + geocode/cadastral enrichment blocks).

Refs #854
bot-backend merged commit 3f1925052b into main 2026-06-26 07:45:09 +00:00
bot-backend deleted branch feat/imv-backfill-scheduler-854 2026-06-26 07:45:09 +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#1910
No description provided.