using LiteCqrs;

namespace TeleWave.Application.Media.Stats;

/// <summary>Сводка по обработке медиа: сколько сейчас в очереди/в обработке и среднее время обработки.</summary>
public sealed record GetMediaStatsQuery : IQuery<MediaStatsDto>;

/// <param name="Queued">Ассетов в статусе Pending (ждут обработки) сейчас.</param>
/// <param name="Processing">Ассетов в статусе Processing (обрабатываются) сейчас.</param>
/// <param name="AverageProcessingSeconds">Среднее время обработки по недавним завершённым (Ready), сек; null — если нет данных.</param>
/// <param name="EstimatedRemainingSeconds">
/// Оценка времени до конца очереди, сек: работа, оставшаяся по всем ждущим и уже начатым ассетам,
/// делённая на число параллельных транскодов. null — очередь пуста либо среднее ещё не набралось.
/// </param>
public sealed record MediaStatsDto(
    int Queued,
    int Processing,
    double? AverageProcessingSeconds,
    double? EstimatedRemainingSeconds
);
