2026-06-11 15:09:46 +10:00
|
|
|
|
using PARR.Domain.Entities;
|
|
|
|
|
|
using PARR.Domain.Entities.Base.History;
|
2026-07-03 11:17:48 +10:00
|
|
|
|
using PARR.Domain.Entities.JobEntities;
|
2026-06-11 15:09:46 +10:00
|
|
|
|
|
|
|
|
|
|
namespace PARR.TemplateMatcher.Services.SimpleSync
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Контекст синхронизации простого шаблона. Передаётся между этапами.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class SimpleSyncContext
|
|
|
|
|
|
{
|
|
|
|
|
|
public Guid JobId { get; init; }
|
|
|
|
|
|
public string JobName { get; set; } = string.Empty;
|
|
|
|
|
|
public HistoryInitiator Initiator { get; init; } = null!;
|
2026-09-09 17:09:57 +10:00
|
|
|
|
|
|
|
|
|
|
// Флаг режима сухого запуска
|
|
|
|
|
|
public bool DryRun { get; init; }
|
|
|
|
|
|
|
2026-06-11 15:09:46 +10:00
|
|
|
|
public Job Job { get; set; } = null!;
|
|
|
|
|
|
public HashSet<Guid> FilteredUnitIds { get; set; } = new();
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Имена юнитов для логирования. Заполняется на этапе фильтрации.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public Dictionary<Guid, string> UnitNames { get; set; } = new();
|
|
|
|
|
|
|
|
|
|
|
|
public List<Template> ExistingUsedTemplates { get; set; } = new();
|
|
|
|
|
|
public List<Guid> NewUnitIds { get; set; } = new();
|
|
|
|
|
|
public List<Template> UnusedTemplates { get; set; } = new();
|
|
|
|
|
|
public List<(Template Template, string ExpectedName)> TemplatesToRename { get; set; } = new();
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Возвращает строку вида 'Имя' (ID) для логирования.
|
|
|
|
|
|
/// Если имя неизвестно — возвращает только ID.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public string FormatUnit(Guid unitId)
|
|
|
|
|
|
{
|
|
|
|
|
|
return UnitNames.TryGetValue(unitId, out var name)
|
|
|
|
|
|
? $"'{name}' ({unitId})"
|
|
|
|
|
|
: $"({unitId})";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|