From 77488bc3546fc6c814d059007143866f422cf7f4 Mon Sep 17 00:00:00 2001 From: Aleksandr Minkin Date: Tue, 7 Apr 2026 21:03:06 +0300 Subject: [PATCH] Refine parser attention state logic --- src/analytics/analytics.service.ts | 3 ++- src/scraper-admin/scraper-admin.service.ts | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/analytics/analytics.service.ts b/src/analytics/analytics.service.ts index e6d3411..65d6d78 100644 --- a/src/analytics/analytics.service.ts +++ b/src/analytics/analytics.service.ts @@ -216,6 +216,7 @@ export class AnalyticsService { const successRate = totalRuns > 0 ? (successCount / totalRuns) * 100 : 0; const sourcePublicationRate = sourceDiscovered > 0 ? (sourcePublished / sourceDiscovered) * 100 : 0; + const hasMeaningfulFailureHistory = failedRuns >= 2; let riskLevel = "STABLE"; @@ -229,7 +230,7 @@ export class AnalyticsService { } else if ( lastRun.status === SourceRunStatus.PARTIAL || (hoursSinceLastRun !== null && hoursSinceLastRun >= 24) || - failedRuns > 0 || + hasMeaningfulFailureHistory || successRate < 80 ) { riskLevel = "WATCH"; diff --git a/src/scraper-admin/scraper-admin.service.ts b/src/scraper-admin/scraper-admin.service.ts index 4196b21..d654f0d 100644 --- a/src/scraper-admin/scraper-admin.service.ts +++ b/src/scraper-admin/scraper-admin.service.ts @@ -75,7 +75,10 @@ export class ScraperAdminService { ) { attentionReason = lastRun.errorMessage || "Последний запуск завершился с ошибкой"; } else if ((health?.riskLevel ?? "STABLE") !== "STABLE") { - attentionReason = "Источник отмечен как требующий внимания"; + attentionReason = + (health?.failedRuns ?? 0) > 0 + ? `${health?.failedRuns ?? 0} неуспешных или частичных запусков в недавнем окне при текущем успешном прогоне` + : "Источник отмечен как требующий внимания"; } return {