feat(templateMatcher): Рефакторинг, основной метод синхронизации GroupedTemplateSynchronizer разбит на отдельные классы; Неиспользуемые шаблоны теперь привязываются к ЭК КОСМПЛЕКСЫ-[ЗО].
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
using PARR.Domain.Entities.Job;
|
||||
using PARR.TemplateMatcher.Models;
|
||||
|
||||
namespace PARR.TemplateMatcher.Services.Interfaces;
|
||||
|
||||
public interface IGroupedTemplateBuilder
|
||||
{
|
||||
/// <summary>
|
||||
/// Строит структуру групп для создания групповых шаблонов.
|
||||
/// Трансформирует связи в пары (UnitId, UnitFieldValueId),
|
||||
/// выполняет внутреннюю группировку и разбиение на подгруппы.
|
||||
/// </summary>
|
||||
Task<List<GroupedTemplateGroup>> BuildAsync(
|
||||
Dictionary<Guid, List<Guid>> initialReverseMapping,
|
||||
JobGroup jobGroup,
|
||||
Job maxJob,
|
||||
CancellationToken ct = default);
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using PARR.Domain.Entities.Base.History;
|
||||
using PARR.Domain.Entities.Job;
|
||||
using PARR.TemplateMatcher.Models;
|
||||
|
||||
namespace PARR.TemplateMatcher.Services.Interfaces;
|
||||
|
||||
public interface IGroupedTemplateProcessor
|
||||
{
|
||||
/// <summary>
|
||||
/// Обрабатывает построенные группы шаблонов:
|
||||
/// 1. Ищет существующие шаблоны.
|
||||
/// 2. Сравнивает состав юнитов.
|
||||
/// 3. Обновляет, переиспользует или создает новые шаблоны.
|
||||
/// 4. Возвращает набор ключей ожидаемых шаблонов для последующей деактивации лишних.
|
||||
/// </summary>
|
||||
Task<HashSet<(Guid JobId, Guid UnitId, int Index)>> ProcessAsync(
|
||||
List<GroupedTemplateGroup> groups,
|
||||
List<Job> jobsInGroup,
|
||||
Job maxJob,
|
||||
HistoryInitiator initiator,
|
||||
CancellationToken ct = default);
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using PARR.Core.Services.UnitFilterService.Models;
|
||||
using PARR.Domain.Entities.Job;
|
||||
|
||||
namespace PARR.TemplateMatcher.Services.Interfaces
|
||||
{
|
||||
public interface IGroupedTemplateUnitFilter
|
||||
{
|
||||
/// <summary>
|
||||
/// Применяет специфичные правила фильтрации для групповых шаблонов.
|
||||
/// 1. Отбирает юниты, имеющие заполненное значение в GroupingUnitFieldId.
|
||||
/// 2. Оставляет только юниты, значение которых в поле РАБОЧАЯ_ГР_ОТВ_ЗА_ЭК разрешено.
|
||||
/// </summary>
|
||||
Task<List<UnitFilterResultDto>> FilterAsync(
|
||||
IEnumerable<UnitFilterResultDto> initialUnits,
|
||||
JobGroup jobGroup,
|
||||
CancellationToken ct = default);
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
using PARR.Domain.Common.Rabbit.Messages;
|
||||
using PARR.Domain.Common.Rabbit.Messages.TemplateMatching;
|
||||
|
||||
namespace PARR.TemplateMatcher.Services.Interfaces
|
||||
{
|
||||
public interface ITemplateUpdaterMqSender
|
||||
{
|
||||
Task SendTemplateUpdateMessageAsync(TemplateUpdaterMq updateRequest);
|
||||
Task SendTemplateUpdateMessageAsync(TemplateUpdaterMessage updateRequest);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user