namespace Nexus.Api.Services; public sealed class StaleTaskRecoveryOptions { public const string SectionName = "TaskRecovery"; /// Schwelle (Minuten) ohne Aktivität, ab der ein In-progress-Task als hängend gilt. public int StalledMinutes { get; set; } = 40; /// Prüfintervall des Watchdogs. public int IntervalMinutes { get; set; } = 10; /// Nur für den manuellen Hard-Reset-Endpoint: Alter (Stunden) ab dem hart zurückgesetzt wird. public int StaleHours { get; set; } = 2; public TimeSpan GetStalledThreshold() => TimeSpan.FromMinutes(Math.Max(1, StalledMinutes)); public TimeSpan GetStaleThreshold() => TimeSpan.FromHours(Math.Max(1, StaleHours)); public TimeSpan GetInterval() => TimeSpan.FromMinutes(Math.Max(1, IntervalMinutes)); }