feat(api, Core, Domain, Dal): Для entity моделей, для DateModified создан атрибут ManualControl - отключает автоматическое управление датой. TaskReconciliationService - сервис по управлению задачами в статусах ошибки, зависла. ITaskMqSettingsProvider - провайдер для управления настройками MQ в зависимости от TaskType

This commit is contained in:
Mikhail Trubnikov
2026-04-22 16:13:23 +10:00
parent 001c09edaa
commit 7da2265d1c
16 changed files with 465 additions and 30 deletions

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; }
}
}