Merge branch 'report' into dev

This commit is contained in:
Mikhail Trubnikov
2026-04-29 14:40:28 +10:00
50 changed files with 1857 additions and 115 deletions

View File

@@ -0,0 +1,16 @@
using PARR.Domain.Enums;
using System.Text.Json.Serialization;
namespace PARR.Domain.Common.Rabbit.Messages
{
/// <summary>
/// Модель для отправки сообщений через ITaskManagement
/// </summary>
public record TaskMessage
{
public Guid TaskId { get; init; }
[JsonConverter(typeof(JsonStringEnumConverter))]
public TaskTypeEnum TypeCode { get; init; }
}
}

View File

@@ -0,0 +1,11 @@
namespace PARR.Domain.Entities.Attributes
{
/// <summary>
/// Отключает автоматическое управление DateModified.
/// </summary>
[AttributeUsage(AttributeTargets.Property)]
public class ManualControlAttribute : Attribute
{
// позже, можно применять к другим свойствам, если придумаем зачем и реализуем логику
}
}

View File

@@ -2,6 +2,11 @@
{
public interface IBaseEntityDateModified
{
/// <summary>
/// Дата обновления объекта в БД.
/// Обновляется автоматически при комите.
/// Чтобы отключить автоматическое управление, применить атрибут [ManualControl]
/// </summary>
public DateTimeOffset? DateModified { get; set; }
}
}

View File

@@ -1,5 +1,6 @@
using Microsoft.EntityFrameworkCore;
using PARR.Domain.Constants;
using PARR.Domain.Entities.Attributes;
using PARR.Domain.Entities.Base;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Enums;
@@ -17,6 +18,7 @@ namespace PARR.Domain.Entities.TaskEntities
public DateTimeOffset DateCreated { get; set; }
[ManualControl]
public DateTimeOffset? DateModified { get; set; }
public TaskTypeEnum TypeCode { get; set; }

View File

@@ -0,0 +1,21 @@
namespace PARR.Domain.Settings
{
/// <summary>
/// Настройки поиска зависших заданий (Task, Reconciliation Job)
/// </summary>
public interface IReconciliationSettings
{
/// <summary>
/// Интервал запуска проверки.
/// Рекомендуемое значение: 5-10 минут.
/// </summary>
TimeSpan CheckInterval { get; set; }
/// <summary>
/// Максимальное кол-во задач для обработки за один проход.
/// Защита от перегрузки при большом кол-ве зависших задач.
/// Рекомендуемое значение 100
/// </summary>
public int MaxTaskPerRun { get; set; }
}
}