diff --git a/PARR.Core/Services/RobotTask/Implementations/RobotTaskService.cs b/PARR.Core/Services/RobotTask/Implementations/RobotTaskService.cs index d2b84d33..03617723 100644 --- a/PARR.Core/Services/RobotTask/Implementations/RobotTaskService.cs +++ b/PARR.Core/Services/RobotTask/Implementations/RobotTaskService.cs @@ -342,9 +342,9 @@ namespace PARR.Core.Services.RobotTask.Implementations ).ToList(); // Проверим StatusTypeId у старых шаблонов в процессе переименования - // 1. Находим задачи переименования, у которых StatusTypeId шаблона != Used + // 1. Находим задачи переименования, у которых StatusTypeId шаблона НЕ является допустимым (!= Used и != Unused) var invalidRenameTasks = allowedTasks - .Where(t => t.Template != null && t.Template.StatusTypeId != TemplateStatusTypeEnum.Used) + .Where(t => t.Template != null && t.Template.StatusTypeId != TemplateStatusTypeEnum.Used && t.Template.StatusTypeId != TemplateStatusTypeEnum.Unused) .ToList(); // 2. Создаем словарь для быстрого поиска и логирования: OldName -> StatusTypeId @@ -361,9 +361,9 @@ namespace PARR.Core.Services.RobotTask.Implementations g => g.First().Template!.StatusTypeId // Значение = StatusTypeId первой задачи в группе (для лога) ); - // 3. Оставляем для подмены только те задачи, у которых StatusTypeId == Used + // 3. Оставляем для подмены только те задачи, у которых StatusTypeId является допустимым (== Used или == Unused) var validAllowedTasks = allowedTasks - .Where(t => t.Template != null && t.Template.StatusTypeId == TemplateStatusTypeEnum.Used) + .Where(t => t.Template != null && (t.Template.StatusTypeId == TemplateStatusTypeEnum.Used || t.Template.StatusTypeId == TemplateStatusTypeEnum.Unused)) .ToList(); // Формируем список заданий @@ -371,7 +371,7 @@ namespace PARR.Core.Services.RobotTask.Implementations var errorTaskIdsSet = tasksToSetErrorStatus.ToHashSet(); var errorCount = errorTaskIdsSet.Count; - // Создаем словарь подмены ТОЛЬКО из валидных задач (где StatusTypeId == Used) + // Создаем словарь подмены ТОЛЬКО из валидных задач (где StatusTypeId == Used или Unused) // ГРУППИРУЕМ по OldName и берем .First()! // Это реализует правило: "если записей несколько, берем из них первую и подменяем ей оригинальное задание". var renameTasksToDictionary = validAllowedTasks @@ -400,7 +400,7 @@ namespace PARR.Core.Services.RobotTask.Implementations { _logger.LogWarning( "Задача для шаблона '{TemplateName}' (TaskId: {TaskId}) ИСКЛЮЧЕНА из выдачи. " + - "Связанный шаблон в процессе переименования имеет недопустимый StatusTypeId = {StatusTypeId} (ожидалось Used). " + + "Связанный шаблон в процессе переименования имеет недопустимый StatusTypeId = {StatusTypeId} (ожидалось Used или Unused). " + "Исходная задача также не выполняется.", task.TemplateName, task.TaskId, badStatusId);