feat(workers): data-freshness monitor (Celery beat → GlitchTip) #1904
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#1904
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/freshness-monitor"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Rank-7 follow-up: автоматический мониторинг свежести данных с алертом в GlitchTip.
Что
Логика свежести уже была в
GET /admin/scrape/freshness(admin_scrape.py, реестр_FRESHNESS_SOURCES+_classify_freshness). Не хватало периодической проверки.compute_freshness(db)из FastAPI-хендлера (единый источник правды; ответ эндпоинта байт-в-байт не изменился — 4 существующих теста зелёные).scrape_freshness_check:SessionLocal()→compute_freshness→ при stale/failed источникахsentry_sdk.capture_message(level=...).level=errorесли критичный источник полностью упал, иначеwarning. Дополнительно логирует в той же severity (no-DSN воркер всё равно surface'ит). Graceful: любая ошибка → лог + return, beat не падает.celery_app.include+beat_schedule— ежедневно 09:00 MSK (после ночного кластера скраперов 03:00-07:00).Тесты
test_scrape_freshness_check.py(5: stale+failed→warning, critical-failed→error, all-ok→no-alert, compute раняет→graceful, хендлер делегирует) + 4 существующих endpoint-теста. 9 passed, ruff clean. Без API-schema изменений → codegen не нужен.Closes #73 (follow-up — beat-часть)