fix(tradein): deactivate_stale для domklik/n1 + честная freshness по scraped_at (#2204) #2221

Merged
lekss361 merged 2 commits from fix/tradein-deactivate-stale-domklik-n1 into main 2026-07-02 20:10:35 +00:00
Owner

Summary

  • deactivate_stale_listings получил kwarg staleness_column (whitelist {last_seen_at, scraped_at}, ValueError до SQL; имя колонки в f-string только после whitelist, значения через param-binding). Прокинут в оба dispatch-пути (kit product_handlers — боевой, legacy scheduler).
  • Seed-миграция 160: расписания deactivate_stale_domklik (ttl=14, staleness_column=scraped_at) и deactivate_stale_n1 (ttl=14). Идемпотентно (ON CONFLICT (source) DO NOTHING), окно 07:00-08:00 UTC.
  • Почему scraped_at для domklik: все 6296 is_active строк делят один last_seen_at (нетрекаемый ежедневный bulk-touch, verified на проде 2026-07-02: идентичный timestamp 19:41:00.179444 без единой строки в scrape_runs) → TTL по last_seen_at вечно матчит 0 строк. scraped_at двигается только реальным скрейпом; TTL=14 зеркалит LISTINGS_FRESH_DAYS эстиматора.
  • domklik blanket по сегментам осознанно: 100% строк vtorichka (prod-проверка в комменте миграции).
  • n1 (381 строка, last_seen заморожен 16.06, скрейпера нет) — деактивируется первым же прогоном.

Как проверено

  • Полный локальный pytest: 2959 passed, 6 skipped, 1 deselected (включая 13 новых тестов: scraped_at-вариант SQL, injection-строка → ValueError + mark_failed без execute, свойства миграции 160).
  • ruff check — чисто.
  • code-reviewer: APPROVE (minor про segments закрыт prod-проверкой в этом же PR).

Refs #2204

## Summary - `deactivate_stale_listings` получил kwarg `staleness_column` (whitelist `{last_seen_at, scraped_at}`, ValueError до SQL; имя колонки в f-string только после whitelist, значения через param-binding). Прокинут в оба dispatch-пути (kit `product_handlers` — боевой, legacy `scheduler`). - Seed-миграция `160`: расписания `deactivate_stale_domklik` (ttl=14, **staleness_column=scraped_at**) и `deactivate_stale_n1` (ttl=14). Идемпотентно (`ON CONFLICT (source) DO NOTHING`), окно 07:00-08:00 UTC. - Почему scraped_at для domklik: все 6296 is_active строк делят один last_seen_at (нетрекаемый ежедневный bulk-touch, verified на проде 2026-07-02: идентичный timestamp 19:41:00.179444 без единой строки в scrape_runs) → TTL по last_seen_at вечно матчит 0 строк. scraped_at двигается только реальным скрейпом; TTL=14 зеркалит LISTINGS_FRESH_DAYS эстиматора. - domklik blanket по сегментам осознанно: 100% строк vtorichka (prod-проверка в комменте миграции). - n1 (381 строка, last_seen заморожен 16.06, скрейпера нет) — деактивируется первым же прогоном. ## Как проверено - Полный локальный pytest: **2959 passed, 6 skipped, 1 deselected** (включая 13 новых тестов: scraped_at-вариант SQL, injection-строка → ValueError + mark_failed без execute, свойства миграции 160). - ruff check — чисто. - code-reviewer: ✅ APPROVE (minor про segments закрыт prod-проверкой в этом же PR). Refs #2204
lekss361 added 1 commit 2026-07-02 20:04:06 +00:00
fix(tradein): deactivate_stale для domklik/n1 + честная freshness по scraped_at (#2204)
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
60959a58c9
- deactivate_stale_listings: kwarg staleness_column (whitelist last_seen_at/scraped_at,
  ValueError до SQL; имя колонки в f-string только после whitelist, значения — binding)
- параметр прокинут в оба dispatch-пути (product_handlers kit + legacy scheduler)
- seed 160: deactivate_stale_domklik (scraped_at, ttl=14 — last_seen_at двигается
  нетрекаемым bulk-touch и для TTL бесполезен), deactivate_stale_n1 (ttl=14, dead source)
- domklik blanket по сегментам осознанно: 100% строк vtorichka (prod 2026-07-02)
- +13 тестов; полный сьют 2959 passed

Refs #2204
bot-backend added 1 commit 2026-07-02 20:07:32 +00:00
merge main: подтянуть ci-tradein гейт (#2208) в ветку
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 7s
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 1m35s
3003e37c67
lekss361 merged commit f5b0076e6f into main 2026-07-02 20:10:35 +00:00
lekss361 deleted branch fix/tradein-deactivate-stale-domklik-n1 2026-07-02 20:10:35 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
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#2221
No description provided.