feat(workers): data-freshness monitor (Celery beat → GlitchTip) #1904

Merged
bot-backend merged 2 commits from feat/freshness-monitor into main 2026-06-25 11:29:35 +00:00
Showing only changes of commit f59d874bac - Show all commits

View file

@ -1560,18 +1560,11 @@ export interface paths {
};
/**
* Scrape Freshness
* @description Свежесть данных по каждому источнику (для dashboard + alerting).
* @description GET-обёртка над compute_freshness только читает, не алертит.
*
* Для каждого источника один проход по его run-таблице агрегирует:
* - last_success_at max(COALESCE(finished_at, started_at)) WHERE status='done'
* - last_attempt_at max(started_at) (или created_at fallback) по всем прогонам
* - last_status status последнего прогона
* - objects_updated_24h / _7d сумма run-счётчика по done-прогонам в окне
* - age_days возраст last_success в днях (NULL если успехов не было)
* - freshness fresh / stale / critical / unknown (по порогам источника)
* - status ok / stale / failed (для UI-светофора)
*
* `overall_status` агрегирует худший статус по критичным источникам.
* Вся агрегация живёт в compute_freshness (один источник истины); эндпоинт
* лишь прокидывает сессию и возвращает результат без изменений формы payload.
* Sentry-алёрты по критичным источникам шлёт beat-таска scrape_freshness_check.
*/
get: operations["scrape_freshness_api_v1_admin_scrape_freshness_get"];
put?: never;