feat(dal,templateMatcher): UnitFilterService переписан, теперь при подсчете количества связей для групп работ зонтик учитываются relationshipFilter. В TemplateMatcher добавлено изменение имени Unused шаблонов в конце имени добавляется DateTimeOffset.UtcNow.ToUnixTimeSeconds() для уникальности неиспользуемых шаблонов. Актуализированы unit-тесты

This commit is contained in:
Mikhail Kuznetsov
2025-12-15 11:50:12 +10:00
parent 03683a13d3
commit 8da4f226a7
9 changed files with 429 additions and 223 deletions

View File

@@ -105,7 +105,7 @@ namespace PARR.TemplateMatcher
TemplateId = template.Id,
JobId = jobId,
UnitId = template.UnitId,
Name = template.Name,
Name = GetTemplateNameForUnsed(template.Name),
IsActiveTemplate = DefaultUnusedTemplateState,
IsActiveSchedule = DefaultUnusedScheduleState,
LastRun = template.LastRun,
@@ -232,6 +232,7 @@ namespace PARR.TemplateMatcher
logger.LogInformation("Синхронизация завершена для JobId {JobId}.", jobId);
}
public async Task UpdateTemplatesForJob(Guid jobId, HistoryInitiator initiator)
{
logger.LogDebug("Начало обновления шаблонов для JobId {JobId}", jobId);
@@ -271,6 +272,7 @@ namespace PARR.TemplateMatcher
targetStatus = TemplateStatusTypeEnum.Unused;
targetIsActiveTemplate = DefaultUnusedTemplateState;
targetIsActiveSchedule = DefaultUnusedScheduleState;
expectedName = GetTemplateNameForUnsed(expectedName);
logger.LogInformation("Шаблон {TemplateId} (UnitId {UnitId}) → деактивация.", template.Id, template.UnitId);
}
@@ -403,6 +405,11 @@ namespace PARR.TemplateMatcher
return null;
}
private string GetTemplateNameForUnsed(string templateName)
{
return templateName + "_" + DateTimeOffset.UtcNow.ToUnixTimeSeconds();
}
private async Task<Job?> GetJobWithGroupAndAutoControlAsync(Guid jobId)
{