gendesign/tradein-mvp/backend
bot-backend 30d91be796
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 1m36s
CI / changes (pull_request) Successful in 8s
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
feat(tradein/monitor): алерт на staleness данных deals по max(deal_date) (#2212)
Джоба-статус rosreestr_* остаётся done при quarter-stale данных (inserted=0
== всё импортировано), маскируя пропущенный операторский импорт нового
квартала. Новый daily-монитор смотрит max(deal_date) и поднимает ERROR-алерт
(→ GlitchTip), когда следующий квартал просрочен публикацией
(порог = конец имеющегося квартала + 3 мес + 45д лага).

Расследование (2026-07-02): импорт НЕ сломан — deal_date = лейбл начала
квартала, 2026Q1 = последний опубликованный Росреестром (Q2 закончился
30.06, публикация ожидается ~август; исторические кварталы загружены
разово 26.04). Монитор ловит именно пропуск ОПЕРАТОРСКОГО шага
(data/sql/02_load_all_quarters.sh), когда quarter_poll задетектит Q2.

- app/tasks/deals_freshness_monitor.py — чистая evaluate_deals_freshness
  (frozen-now testable) + DB-обёртка; overdue → ERROR-лог, не failed
- scheduler.py + product_handlers.py — оба dispatch-пути (kit боевой + legacy)
- data/sql/162 — seed (daily, 08:00-09:00 UTC, lag_allowance_days=45)
- 23 теста: арифметика порога (год-переход, clamp), migration props, parity

Refs #2212
2026-07-02 23:31:36 +03:00
..
app feat(tradein/monitor): алерт на staleness данных deals по max(deal_date) (#2212) 2026-07-02 23:31:36 +03:00
data/sql feat(tradein/monitor): алерт на staleness данных deals по max(deal_date) (#2212) 2026-07-02 23:31:36 +03:00
scripts feat(tradein/domclick): local-runner + ingest tooling → main (split from parked Layer-B) 2026-06-28 10:26:52 +03:00
tests feat(tradein/monitor): алерт на staleness данных deals по max(deal_date) (#2212) 2026-07-02 23:31:36 +03:00
.dockerignore feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
Dockerfile chore(scraper-kit): docker-context wiring + restore backend workspace dep (#2137) 2026-07-02 14:21:38 +00:00
pyproject.toml ci(tradein): pre-merge гейт — backend pytest + frontend type-check/lint (#2208) (#2220) 2026-07-02 19:56:22 +00:00