feat(tradein-scheduler): nightly newbuilding-enrichment schedule (#973) #1303

Merged
bot-backend merged 1 commit from feat/newbuilding-enrich-schedule-973 into main 2026-06-13 11:30:46 +00:00
Collaborator

Summary

Регистрирует nightly-расписание для newbuilding-enrichment в tradein in-app scheduler (#973, GG-форсайт 950-E2).

Три enrichment-таблицы (houses_price_dynamics, house_reliability_checks, house_reviews) раньше наполнялись только инлайн в Cian full-sweep. На prod 306 домов с ext_source=cian_newbuilding, но обогащено ~18/3/0 — backlog. Это расписание дренирует его ночью bounded-слайсами.

Что добавлено

  • run_newbuilding_enrich() wrapper в tasks/newbuilding_enrich_backfill.py (heartbeat → backfill_newbuilding_enrichment (#972, уже в main) → mark_done/failed).
  • trigger_newbuilding_enrich_run() + dispatch-ветка в scheduler.py (зеркалит trigger_sber_index_pull_run): _claim_run guard, async task, zombie-reap наследуется.
  • seed-миграция 103: окно 00:00-01:00 UTC (03:00-04:00 МСК, до sweep-блока), limit=25, next_run_at на завтра, ON CONFLICT DO NOTHING.

⚠️ Засеяно enabled=FALSE (dormant)

На prod весь external-HTTP scraping намеренно на паузе (только deactivate_stale_avito активен). Засеваю dormant чтобы не запустить одиночный источник при общей паузе. Код+расписание готовы; активация — UPDATE scrape_schedules SET enabled=true WHERE source='newbuilding_enrich' когда scraping возобновят.

Idempotency (наследуется от #972)

force=False исключает дома с price_dynamics AND reliability; per-house SAVEPOINT; limit bounds per-fire. Re-fire не дублирует.

Test plan

  • ruff clean
  • 34 теста green (25 backfill/wrapper + 9 scheduler-wiring)
  • psycopg v3 CAST, idempotent migration
  • post-deploy: миграция 103 применилась, строка dormant в scrape_schedules

Деплой-порядок

Миграция 103 после deploy scheduler.py + task (dispatch должен знать источник на первом fire). Backfill на prod НЕ запускался.

Closes #973

## Summary Регистрирует nightly-расписание для newbuilding-enrichment в tradein in-app scheduler (#973, GG-форсайт 950-E2). Три enrichment-таблицы (`houses_price_dynamics`, `house_reliability_checks`, `house_reviews`) раньше наполнялись только инлайн в Cian full-sweep. На prod 306 домов с `ext_source=cian_newbuilding`, но обогащено ~18/3/0 — backlog. Это расписание дренирует его ночью bounded-слайсами. ### Что добавлено - **`run_newbuilding_enrich()`** wrapper в `tasks/newbuilding_enrich_backfill.py` (heartbeat → `backfill_newbuilding_enrichment` (#972, уже в main) → mark_done/failed). - **`trigger_newbuilding_enrich_run()`** + dispatch-ветка в `scheduler.py` (зеркалит `trigger_sber_index_pull_run`): `_claim_run` guard, async task, zombie-reap наследуется. - **seed-миграция 103**: окно 00:00-01:00 UTC (03:00-04:00 МСК, до sweep-блока), limit=25, next_run_at на завтра, `ON CONFLICT DO NOTHING`. ### ⚠️ Засеяно enabled=FALSE (dormant) На prod весь external-HTTP scraping намеренно на паузе (только `deactivate_stale_avito` активен). Засеваю dormant чтобы не запустить одиночный источник при общей паузе. Код+расписание готовы; активация — `UPDATE scrape_schedules SET enabled=true WHERE source='newbuilding_enrich'` когда scraping возобновят. ### Idempotency (наследуется от #972) force=False исключает дома с price_dynamics AND reliability; per-house SAVEPOINT; limit bounds per-fire. Re-fire не дублирует. ## Test plan - [x] ruff clean - [x] 34 теста green (25 backfill/wrapper + 9 scheduler-wiring) - [x] psycopg v3 CAST, idempotent migration - [ ] post-deploy: миграция 103 применилась, строка dormant в scrape_schedules ## Деплой-порядок Миграция 103 после deploy scheduler.py + task (dispatch должен знать источник на первом fire). Backfill на prod НЕ запускался. Closes #973
bot-backend added 1 commit 2026-06-13 11:24:29 +00:00
feat(tradein-scheduler): nightly newbuilding-enrichment schedule (#973)
All checks were successful
CI / changes (pull_request) Successful in 6s
CI / changes (push) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (push) Has been skipped
CI / frontend-tests (push) Has been skipped
Deploy Trade-In / test (push) Successful in 33s
Deploy Trade-In / build-backend (push) Successful in 1m3s
Deploy Trade-In / changes (push) Successful in 5s
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / build-browser (push) Has been skipped
Deploy Trade-In / deploy (push) Successful in 40s
e1442d3b1d
Регистрирует отдельный in-app scheduler-источник для cian_newbuilding
enrichment-backfill (houses_price_dynamics / house_reliability_checks /
house_reviews), который раньше бежал только инлайн в Cian full-sweep.

- run_newbuilding_enrich() wrapper (heartbeat → backfill → mark_done/failed),
  делегирует backfill_newbuilding_enrichment (#972, уже в main).
- trigger_newbuilding_enrich_run() + dispatch-ветка в scheduler_loop
  (зеркалит trigger_sber_index_pull_run): _claim_run guard, async task,
  zombie-reap наследуется; idempotency наследуется (skip уже обогащённых,
  per-house SAVEPOINT, bounded per-fire limit дренирует backlog 306 домов).
- seed-миграция 103: source='newbuilding_enrich', окно 00:00-01:00 UTC
  (03:00-04:00 МСК, до 01:00+ UTC sweep-блока), limit=25, next_run_at на завтра.

Засеяно enabled=FALSE (dormant): на prod весь external-HTTP scraping намеренно
на паузе. Расписание+триггер готовы, но не стартуют до намеренного возобновления
(UPDATE ... SET enabled=true). Не активирую одиночный источник при общей паузе.

Closes #973
bot-backend merged commit e1442d3b1d into main 2026-06-13 11:30:46 +00:00
bot-backend deleted branch feat/newbuilding-enrich-schedule-973 2026-06-13 11:30:46 +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#1303
No description provided.