fix(freshness): calibrate kn staleness thresholds to weekly cadence
kn (DOM.РФ ЖК) runs weekly (Mon cron) but thresholds were 2/5 → false "stale" every Wed-Sun. Recalibrate to 8/14 (weekly, mirrors objective) + regression test. Surfaced by the freshness monitor's first prod run. Refs #73
This commit is contained in:
parent
66da75681f
commit
2304e09e37
2 changed files with 19 additions and 2 deletions
|
|
@ -1290,8 +1290,12 @@ _FRESHNESS_SOURCES: list[FreshnessSource] = [
|
|||
label="DOM.РФ kn-API (ЖК)",
|
||||
table="kn_scrape_runs",
|
||||
work_col="objects_count",
|
||||
fresh_days=2.0,
|
||||
stale_days=5.0,
|
||||
# kn шедулится ЕЖЕНЕДЕЛЬНО (settings.scrape_kn_cron='15 4 * * mon', Mon 04:15 МСК),
|
||||
# поэтому 2/5 дней давали ложный "stale" каждую среду-воскресенье. Калибруем под
|
||||
# недельную каденцию (как objective 7/14): fresh до 8 дней (полная неделя + добег
|
||||
# понедельничного прогона), stale при пропуске ~двух понедельников.
|
||||
fresh_days=8.0,
|
||||
stale_days=14.0,
|
||||
critical=True,
|
||||
),
|
||||
FreshnessSource(
|
||||
|
|
|
|||
|
|
@ -195,3 +195,16 @@ def test_classify_freshness_boundaries() -> None:
|
|||
assert f(4.9, 2.0, 5.0) == "stale"
|
||||
assert f(5.0, 2.0, 5.0) == "critical" # ровно stale_days → critical
|
||||
assert f(100.0, 2.0, 5.0) == "critical"
|
||||
|
||||
|
||||
def test_kn_thresholds_match_weekly_cadence() -> None:
|
||||
"""kn шедулится еженедельно (Mon cron) → пороги должны покрывать полную неделю,
|
||||
иначе ложный 'stale' каждую среду-воскресенье. Регрессия на калибровку."""
|
||||
kn = next(s for s in admin_scrape._FRESHNESS_SOURCES if s.source == "kn")
|
||||
f = admin_scrape._classify_freshness
|
||||
# В течение недели после понедельничного прогона kn остаётся свежим.
|
||||
assert f(3.9, kn.fresh_days, kn.stale_days) == "fresh" # пятница
|
||||
assert f(6.5, kn.fresh_days, kn.stale_days) == "fresh" # воскресенье
|
||||
# Пропуск одного понедельника → stale; двух → critical.
|
||||
assert f(9.0, kn.fresh_days, kn.stale_days) == "stale"
|
||||
assert f(15.0, kn.fresh_days, kn.stale_days) == "critical"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue