feat(api,core,domain): RobotSnapshot - почасовой отчет о загрузке роботов

This commit is contained in:
Mikhail Trubnikov
2026-06-11 14:44:39 +10:00
parent 3b6df1f617
commit 19cb6b50bf
6 changed files with 243 additions and 2 deletions

View File

@@ -0,0 +1,16 @@
namespace PARR.Domain.DTOs.RobotSnapshotDTO
{
public record RobotAnalyticsQuery
{
public DateTimeOffset DateStart { get; init; }
public DateTimeOffset DateEnd { get; init; }
/// <summary>
/// Смещение часового пояса
/// </summary>
public TimeSpan Offset { get; init; }
public string? Ip { get; init; }
}
}

View File

@@ -0,0 +1,47 @@
using PARR.Domain.DTOs.User;
namespace PARR.Domain.DTOs.RobotSnapshotDTO
{
/// <summary>
/// Аналитика по снапшотам роботов
/// </summary>
public record ServerHourlyAnalyticsDto
{
public UserBaseDto Robot { get; init; } = null!;
/// <summary>
/// Почасовая статистика для гарфиков
/// </summary>
public List<RobotHourlyPointDto> Snapshots { get; set; } = new();
}
/// <summary>
/// Почасовая статистика по снапшотам роботов
/// </summary>
public record RobotHourlyPointDto
{
public DateTimeOffset Hour { get; set; }
public int MaxAllowedRobots { get; set; }
/// <summary>
/// Максимальное кол-во роботов работающих одновременно по шаблонам
/// </summary>
public int MaxTemplateRobots { get; set; }
/// <summary>
/// Сколько роботов в среднем, работало в течении часа
/// </summary>
public double AvgTemplateRobots { get; set; }
/// <summary>
/// Максимальное кол-во роботов работающих одновременно по расписаниям
/// </summary>
public int MaxScheduleRobots { get; set; }
/// <summary>
/// Сколько роботов в среднем, работало в течении часа
/// </summary>
public double AvgScheduleRobots { get; set; }
}
}