using PARR.Domain.Enums.Workload;
namespace PARR.Domain.DTOs.Workload
{
///
/// Отчет о загруженности
///
public record WorkloadReport
{
///
/// Тип отчета (все ЗО, все РГ, одна ЗО, одна РГ)
///
public WorkloadReportType Type { get; init; }
///
/// Название отчета (По всем ЗО, по одной ЗО)
///
public required string DisplayName { get; init; }
///
/// Подзаголовок, наименование конкретной ЗО/РГ
///
public string? SubfilterName { get; init; }
///
/// Дата формирования отчета
///
public DateTimeOffset ReportCacheCreatedAt { get; init; }
///
/// Дата формирования кэша ЗО и РГ
///
public DateTimeOffset TemplateCacheCreatedAt { get; init; }
///
/// Список дней
///
public required List Days { get; init; }
///
/// Нагруженность
///
public required List Statistics { get; init; }
}
public record WorkloadSummary
{
public required WorkloadSummaryItem Total { get; init; }
public required WorkloadSummaryItem Activated { get; init; }
public required WorkloadSummaryItem Deactivated { get; init; }
}
public record WorkloadSummaryItem
{
public int Count { get; init; }
public double Average { get; init; }
public int Max { get; set; }
}
public record WorkloadDayItem
{
public DateOnly Date { get; init; }
public bool IsWeekend { get; init; }
}
public record WorkloadStatisticItem
{
public required string Title { get; init; }
///
/// ИД строки, если есть.
/// Например JobId
///
public Guid? ObjId { get; init; }
public required WorkloadSummary Summary { get; init; }
public required List DailyMetrics { get; init; }
}
public record WorkloadDailyItem
{
public DateOnly Date { get; init; }
public bool IsWeekend { get; init; }
public int Total { get; init; }
public int Activated { get; init; }
public int Deactivated { get; init; }
}
}