namespace Cleanuparr.Infrastructure.Stats; /// /// Aggregated application statistics for a timeframe, designed for dashboard integrations. /// Every section except is scoped to the timeframe and reflects only live activity /// unless dry-run is explicitly included. is a point-in-time gauge. /// public class StatsV2Response { /// /// The raw event audit for the timeframe: total plus breakdowns by event type and severity. /// Higher-level sections (strikes, removals, cleaned, searches) are ergonomic roll-ups derived /// from the same events. /// public EventV2Stats Events { get; set; } = new(); /// /// Strike activity in the timeframe (issued, by type, recovered). /// public StrikeV2Stats Strikes { get; set; } = new(); /// /// Downloads removed in the timeframe, broken down by reason. Malware removals are the /// AllFilesBlocked + AtLeastOneFileBlocked reasons within this breakdown. /// public RemovalsV2Stats Removals { get; set; } = new(); /// /// Downloads cleaned by the download cleaner in the timeframe, broken down by reason. /// public CleanedV2Stats Cleaned { get; set; } = new(); /// /// Seeker search activity in the timeframe. /// public SearchesV2Stats Searches { get; set; } = new(); /// /// Scheduled job run outcomes in the timeframe, overall and per job type. /// public JobV2Stats Jobs { get; set; } = new(); /// /// Current health of configured download clients and arr instances. This is a cached gauge /// (updated by a background service roughly every 5 minutes), not a timeframe-scoped metric. /// public HealthStats Health { get; set; } = new(); /// /// The timeframe the response covers, in hours, echoing the requested value after clamping. /// public int TimeframeHours { get; set; } /// /// When this response was generated (UTC). /// public DateTimeOffset GeneratedAt { get; set; } }