feat(tradein): sber-index freshness monitor (п.1 observability) #2503

Merged
bot-backend merged 1 commit from fix/tradein-sber-freshness-monitor into main 2026-07-12 20:31:20 +00:00
Collaborator

п.1 — sber staleness → freshness-monitor (observability, зеркало deals_freshness_monitor)

Staleness СберИндекса ранее тонула в per-estimate warning (estimator._load_sber_index_series #audit-5a). NB: sber-pull НЕ сломан (enabled, monthly, next 07-17; источник инхерентно лагает 1-2мес) — закрываю именно observability-gap.

  • tasks/sber_freshness_monitor.py (new): evaluate_sber_freshness (frozen-now, testable) + check_sber_freshness (SELECT max(period_month) c #R2-H1 secondary-only фильтром → verdict → лог → counters). Зеркалит deals_freshness_monitor дословно (структура/стиль/counters).
  • product_handlers._job_sber_freshness_monitor + registry; seed-миграция 180 (scrape_schedules, daily 09-10 UTC, lag_allowance_days=25).
  • Порог 60д (35 + 25 lag-allowance) — не шумит на штатном лаге, алертит на застревании >~2мес.
  • Live: age 72д → alert=1 (текущий дрейф surface`ится). Estimator adjustment НЕ тронут.

Тесты: 42 passed (sber+deals monitor + manifest); ruff clean. NB: лог WARNING (breadcrumb, не GlitchTip-issue — sber-лаг ниже severity чем deals); поднять до ERROR если ops нужен issue.

## п.1 — sber staleness → freshness-monitor (observability, зеркало deals_freshness_monitor) Staleness СберИндекса ранее тонула в per-estimate warning (`estimator._load_sber_index_series` #audit-5a). NB: sber-pull НЕ сломан (enabled, monthly, next 07-17; источник инхерентно лагает 1-2мес) — закрываю именно observability-gap. - `tasks/sber_freshness_monitor.py` (new): `evaluate_sber_freshness` (frozen-now, testable) + `check_sber_freshness` (SELECT max(period_month) c #R2-H1 secondary-only фильтром → verdict → лог → counters). Зеркалит deals_freshness_monitor дословно (структура/стиль/counters). - `product_handlers._job_sber_freshness_monitor` + registry; seed-миграция 180 (scrape_schedules, daily 09-10 UTC, `lag_allowance_days=25`). - Порог 60д (35 + 25 lag-allowance) — не шумит на штатном лаге, алертит на застревании >~2мес. - Live: age 72д → **alert=1** (текущий дрейф surface`ится). Estimator adjustment НЕ тронут. Тесты: 42 passed (sber+deals monitor + manifest); ruff clean. NB: лог WARNING (breadcrumb, не GlitchTip-issue — sber-лаг ниже severity чем deals); поднять до ERROR если ops нужен issue.
bot-backend added 1 commit 2026-07-12 20:29:05 +00:00
feat(tradein): монитор свежести СберИндекса (audit п.1)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 7s
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 / frontend-checks (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 51s
07275c3c97
Добавляет sber_freshness_monitor по образцу deals_freshness_monitor:
staleness данных СберИндекса теперь видна на MONITOR-частоте, а не тонет
в per-estimate warning'ах estimator._load_sber_index_series (#audit-5a).

- app/tasks/sber_freshness_monitor.py: чистая evaluate_sber_freshness()
  (frozen-now, без БД) + check_sber_freshness() (один SELECT
  max(period_month) вторичного сегмента по региону, #R2-H1 фильтр как в
  эстиматоре; WARNING при stale, mark_done при алерте — это монитор, не
  сбой; mark_failed только при пустой таблице).
- app/services/product_handlers.py: _job_sber_freshness_monitor + Handler
  в build_product_handlers (run_in_executor, как deals-монитор).
- data/sql/180_seed_sber_freshness_monitor.sql: seed scrape_schedules
  (enabled, daily 09:00-10:00 UTC, lag_allowance_days=25).
- tests/test_sber_freshness_monitor.py: frozen-now (fresh/stale/границы) +
  FakeDB (fresh/stale/empty/кастомный lag) + свойства миграции + registry.

Порог алерта: sber_index_max_age_days (35) + lag_allowance (25) = 60д.
+25 — запас на инхерентный лаг публикации источника (1-2 мес), чтобы не
шуметь на штатном отставании. Прод 2026-07-12: max=2026-05-01, age=72д >
60 → alert=1.
bot-backend merged commit 73f932d60a into main 2026-07-12 20:31:20 +00:00
bot-backend deleted branch fix/tradein-sber-freshness-monitor 2026-07-12 20:31:20 +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#2503
No description provided.