namespace Cleanuparr.Infrastructure.Stats; /// /// Downloads cleaned by the download cleaner in the timeframe (DownloadCleaned events), broken down by reason. /// Cleaning is distinct from a removal: it happens when a download meets its seeding goals, not because it /// was struck out. Excludes dry-run activity unless the caller opts in. /// public class CleanedV2Stats { /// /// Total downloads cleaned in the timeframe (all reasons). Equal to the sum of . /// public int Total { get; set; } /// /// Cleaned downloads grouped by clean reason (MaxRatioReached, MaxSeedTimeReached). /// Keys are PascalCase clean-reason names; only reasons with activity are present. /// public Dictionary ByReason { get; set; } = new(); }