fix(core): Исправлена логика выдачи заданий роботам при множественном переименовании, можно брать шаблоны в статусах used и unused
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user