Files
parr_api/PARR.TemplateMatcher/Services/GroupedSync/GroupedSyncContext.cs
Mikhail Kuznetsov f9f234d119 refactor(templateMatcher):
- унификация деактивации шаблонов между разными синхронизаторами
- поиск ЭК выделен в отдельную сущность
2026-10-14 14:28:58 +10:00

42 lines
1.8 KiB
C#

using PARR.Core.Services.UnitFilterService.Models;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Entities.JobEntities;
using PARR.Domain.Entities.JobGroupEntities;
using PARR.TemplateMatcher.Models;
namespace PARR.TemplateMatcher.Services.GroupedSync;
/// <summary>
/// Контекст групповой синхронизации. Передаётся между этапами.
/// </summary>
public class GroupedSyncContext
{
public Guid JobGroupId { get; init; }
public string JobGroupName { get; set; } = string.Empty;
public HistoryInitiator Initiator { get; init; } = null!;
public JobGroup JobGroup { get; set; } = null!;
public List<Job> JobsInGroup { get; set; } = new();
public Job MaxJob { get; set; } = null!;
public List<UnitFilterResultDto> FilteredUnits { get; set; } = new();
public Dictionary<Guid, List<Guid>> ReverseMapping { get; set; } = new();
public List<GroupedTemplateGroup> TemplateGroups { get; set; } = new();
public HashSet<(Guid JobId, Guid UnitId, int Index)> ExpectedTemplateKeys { get; set; } = new();
// Режим только для чтения — без записи в БД и отправки в MQ
public bool DryRun { get; set; } = false;
/// <summary>
/// Имена юнитов для логирования. Заполняется на этапе фильтрации.
/// </summary>
public Dictionary<Guid, string> UnitNames { get; set; } = new();
/// <summary>
/// Возвращает строку вида 'Имя' (ID) для логирования.
/// </summary>
public string FormatUnit(Guid unitId)
{
return UnitNames.TryGetValue(unitId, out var name)
? $"'{name}' ({unitId})"
: $"({unitId})";
}
}