feat(api,core,domain): Статистика по роботам, кол-во работающих роботов в час

This commit is contained in:
Mikhail Trubnikov
2026-06-15 11:00:53 +10:00
parent 19cb6b50bf
commit 21e00ce42e
9 changed files with 223 additions and 39 deletions

View File

@@ -0,0 +1,17 @@
namespace PARR.Domain.DTOs.RobotSnapshotDTO
{
/// <summary>
/// Почасовая статистика по снапшотам роботов
/// </summary>
public record HourlyRobotTypeAnalyticsDto
{
public DateTimeOffset Hour { get; init; }
//public int MaxAllowedRobots { get; init; }
/// <summary>
/// Среднее кол-во роботов работающих в течении часа
/// </summary>
public double AvgRobots { get; init; }
}
}

View File

@@ -1,16 +1,30 @@
namespace PARR.Domain.DTOs.RobotSnapshotDTO
using PARR.Domain.Enums;
namespace PARR.Domain.DTOs.RobotSnapshotDTO
{
public record RobotAnalyticsQuery
public record RobotAnalyticsBaseQuery
{
public DateTimeOffset DateStart { get; init; }
public DateTimeOffset DateEnd { get; init; }
/// <summary>
/// Смещение часового пояса
/// </summary>
public TimeSpan Offset { get; init; }
}
public record RobotAnalyticsRobotTypeQuery : RobotAnalyticsBaseQuery
{
/// <summary>
/// Тип робота
/// </summary>
public RobotsEnum RobotType { get; init; }
}
public record RobotAnalyticsQuery : RobotAnalyticsBaseQuery
{
public string? Ip { get; init; }
}
}

View File

@@ -0,0 +1,20 @@
namespace PARR.Domain.DTOs.RobotSnapshotDTO
{
/// <summary>
/// Селект из БД по снапшотам по типам роботов
/// </summary>
public record RobotSnapshotRobotTypeDbDto
{
public int LocalYear { get; init; }
public int LocalMonth { get; init; }
public int LocalDay { get; init; }
public int LocalHour { get; init; }
//public int MaxAllowed { get; init; }
public int Sum { get; init; }
}
}

View File

@@ -3,7 +3,7 @@
namespace PARR.Domain.DTOs.RobotSnapshotDTO
{
/// <summary>
/// Аналитика по снапшотам роботов
/// Аналитика по снапшотам роботов с группировкой по IP робота
/// </summary>
public record ServerHourlyAnalyticsDto
{