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

@@ -97,7 +97,12 @@ namespace PARR.Core.Services.Task.Handlers
private async Task<bool> TryCaptureTaskAsync(TaskItem task)
{
if (task.StatusCode != TaskItemStatusEnum.Pending)
{
// Логируем, но не считаем ошибкой
logger.LogDebug("Задача {TaskId} не в Pending (статус {Status}), пропускаем", task.Id, task.StatusCode);
return false;
}
// Атомарный захват задачи
var affectedRows = await taskRepository.TaskCaptureAsync(task.Id);
@@ -112,6 +117,8 @@ namespace PARR.Core.Services.Task.Handlers
return true;
}
logger.LogDebug("Задача {TaskId} уже захвачена другим воркером", task.Id);
return false;
}
@@ -221,6 +228,10 @@ namespace PARR.Core.Services.Task.Handlers
// Вариант: сохранить флаг, а воркер после ProcessAsync проверит и отправит
// Это будет реализовано в BackgroundService
//todo: !!! Вот это делаем дальше!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// тоже самое в WorkloadCacheBuilderService
//todo:!!!!!!!!!
await System.Threading.Tasks.Task.Delay(50);
}