From 4cd6134ad4c832b7591b2160bdae5bf7806e873d Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Thu, 30 Jul 2026 10:53:41 +1000 Subject: [PATCH] =?UTF-8?q?fix(core):=20=D0=98=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B2=D1=8B=D0=B4=D0=B0=D1=87=D0=B8=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B4=D0=B0=D0=BD=D0=B8=D0=B9=20=D1=80=D0=BE=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=BC=20=D0=BF=D1=80=D0=B8=20=D0=BC=D0=BD=D0=BE=D0=B6?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=B2=D0=B5=D0=BD=D0=BD=D0=BE=D0=BC=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B8,=20=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=20=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D1=82=D1=8C=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=B2=20=D1=81=D1=82=D0=B0=D1=82=D1=83=D1=81=D0=B0?= =?UTF-8?q?=D1=85=20used=20=D0=B8=20unused?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RobotTask/Implementations/RobotTaskService.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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);