From 01f2c5290d1ff98e7adf77b29f5a041377bb08e4 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Fri, 3 Jul 2026 21:46:30 +0000 Subject: [PATCH] =?UTF-8?q?fix(freshness):=20=D0=BF=D0=BE=D1=80=D0=BE?= =?UTF-8?q?=D0=B3=D0=B8=20nspd=5Fgeo=20=D0=BF=D0=BE=D0=B4=20on-demand=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=B4=D0=B5=D0=BD=D1=86=D0=B8=D1=8E=20(=D1=83?= =?UTF-8?q?=D0=B1=D0=B8=D1=80=D0=B0=D0=B5=D1=82=20=D0=B5=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BB=D0=BE?= =?UTF-8?q?=D0=B6=D0=BD=D1=8B=D0=B9=20stale)=20(#2325)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/api/v1/admin_scrape.py | 8 ++++++-- backend/tests/api/v1/test_admin_scrape_freshness.py | 8 +++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/backend/app/api/v1/admin_scrape.py b/backend/app/api/v1/admin_scrape.py index ac0f3904..d4c4bb9f 100644 --- a/backend/app/api/v1/admin_scrape.py +++ b/backend/app/api/v1/admin_scrape.py @@ -1404,8 +1404,12 @@ _FRESHNESS_SOURCES: list[FreshnessSource] = [ table="nspd_geo_jobs", work_col="targets_done", attempt_fallback_col="created_at", - fresh_days=7.0, - stale_days=30.0, + # On-demand источник БЕЗ cron (admin UI / CLI / lazy из analyze) — штучные + # фетчи по активности пользователя. fresh_days=7 флагал каждую неделю + # тишины ложным stale-алертом (расследование 2026-07-04); пороги — под + # реальную каденцию, critical=False и так не трогает overall. + fresh_days=30.0, + stale_days=90.0, ), FreshnessSource( source="cadastre", diff --git a/backend/tests/api/v1/test_admin_scrape_freshness.py b/backend/tests/api/v1/test_admin_scrape_freshness.py index f5a1c546..6d1cf339 100644 --- a/backend/tests/api/v1/test_admin_scrape_freshness.py +++ b/backend/tests/api/v1/test_admin_scrape_freshness.py @@ -89,8 +89,8 @@ def test_freshness_mixed_statuses() -> None: "last_status": None, }, "nspd_geo_jobs": { - "last_success_at": _ago(40.0), # >= stale_days=30 → critical → failed - "last_attempt_at": _ago(40.0), + "last_success_at": _ago(100.0), # >= stale_days=90 → critical → failed + "last_attempt_at": _ago(100.0), "upd_24h": 0, "upd_7d": 0, "last_status": "done", @@ -230,9 +230,7 @@ def test_freshness_all_healthy() -> None: "last_status": "done", "recent_output": 100000, # выше любого floor → flagged-источники ok } - rows = { - s.table: dict(fresh_row) for s in admin_scrape._FRESHNESS_SOURCES - } + rows = {s.table: dict(fresh_row) for s in admin_scrape._FRESHNESS_SOURCES} _override_db(_make_db(rows)) try: resp = TestClient(app).get(ENDPOINT)