feat(api,core): Методы в API для получения метрик заданий роботам, StatRobotMetricsController.

This commit is contained in:
Mikhail Trubnikov
2026-07-16 10:12:56 +10:00
parent 4c80e247f5
commit 751b693e72
17 changed files with 540 additions and 2 deletions

View File

@@ -1,4 +1,6 @@
namespace PARR.API.Contracts.V1
using Npgsql.EntityFrameworkCore.PostgreSQL.Query.Expressions.Internal;
namespace PARR.API.Contracts.V1
{
// https://tproger.ru/translations/luchshie-praktiki-razrabotki-rest-api-20-sovetov/
@@ -324,6 +326,16 @@
public const string GetWorkloadTemplateReport = BaseStat + "/workload/templates/{reportType}/{filter}/{state}/{date}";
}
public static class StatRobotMetrics
{
public const string GetRobotStatusMetrics = BaseStat + "/robot-metrics/robot-status/{robotCode}/{period}";
public const string GetTaskStatusMetrics = BaseStat + "/robot-metrics/task-status/{robotCode}/{period}";
public const string GetFilteredMetrics = BaseStat + "/robot-metrics/filtered";
}
#endregion
#region Наряды

View File

@@ -0,0 +1,22 @@
using PARR.Domain.Enums;
namespace PARR.API.Contracts.V1.Requests.Queries
{
public record RobotFilteredMetricsQuery
{
public RobotsEnum? RobotCode { get; init; }
public RobotStatusEnum? RobotStatusCode { get; init; }
public TaskStatusEnum? TaskStatusCode { get; init; }
public DateTimeOffset? DateFrom { get; init; }
public DateTimeOffset? DateTo { get; init; }
/// <summary>
/// Шаг группировки в минутах (например, 2, 30, 60, 1440)
/// </summary>
public int IntervalMinutes { get; set; } = 30;
}
}

View File

@@ -0,0 +1,8 @@
namespace PARR.API.Contracts.V1.Responses.Statistics
{
public record StatFilteredChartPoint
{
public DateTimeOffset Timestamp { get; init; }
public int Count { get; init; }
}
}

View File

@@ -0,0 +1,11 @@
namespace PARR.API.Contracts.V1.Responses.Statistics
{
public record StatRobotStatusChartPoint
{
public DateTimeOffset Timestamp { get; init; }
public int Wait { get; init; }
public int InProgress { get; init; }
public int Error { get; init; }
public int Complete { get; init; }
}
}

View File

@@ -0,0 +1,10 @@
namespace PARR.API.Contracts.V1.Responses.Statistics
{
public record StatTaskStatusChartPoint
{
public DateTimeOffset Timestamp { get; init; }
public int Creating { get; init; }
public int Updating { get; init; }
public int Ok { get; init; }
}
}