feat(templateMatcher): добавлена поддержка настроек AutoControl.

This commit is contained in:
Mikhail Kuznetsov
2025-12-08 10:32:13 +10:00
parent 4815840f64
commit 96a1736ef5

View File

@@ -18,7 +18,10 @@ namespace PARR.TemplateMatcher
internal class TemplateMatcher : ITemplateMatcher
{
private const int UnusedCandidateBatchSize = 10;
private const bool DefaultUnusedTemplateState = false;
private const bool DefaultUnusedScheduleState = false;
private const bool DefaultUsedTemplateState = false;
private const bool DefaultUsedScheduleState = false;
private readonly ILogger<TemplateMatcher> logger;
private readonly IUnitFilterService unitFilterService;
private readonly MqSettings mqSettings;
@@ -61,7 +64,7 @@ namespace PARR.TemplateMatcher
return;
}
var job = await GetJobWithGroupAsync(jobId);
var job = await GetJobWithGroupAndAutoControlAsync(jobId);
if (job == null)
{
logger.LogError("Job с Id {JobId} не найден.", jobId);
@@ -103,8 +106,8 @@ namespace PARR.TemplateMatcher
JobId = jobId,
UnitId = template.UnitId,
Name = template.Name,
IsActiveTemplate = false,
IsActiveSchedule = false,
IsActiveTemplate = DefaultUnusedTemplateState,
IsActiveSchedule = DefaultUnusedScheduleState,
LastRun = template.LastRun,
NextRun = template.NextRun,
Index = template.Index,
@@ -139,14 +142,16 @@ namespace PARR.TemplateMatcher
var expectedName = await GetNormalizedTemplateNameAsync(job, unitId);
var nextRun = await GetNextRunAsync(job); // новый шаблон → всегда пересчитываем
var updateRequest = new TemplateUpdaterMq
{
TemplateId = reused.Id,
JobId = jobId,
UnitId = unitId,
Name = expectedName,
IsActiveTemplate = false,
IsActiveSchedule = false,
IsActiveTemplate = job.AutoControl?.InitUsedTemplateState ?? DefaultUsedTemplateState,
IsActiveSchedule = job.AutoControl?.InitUsedScheduleState ?? DefaultUsedScheduleState,
StatusTypeId = TemplateStatusTypeEnum.Used,
Initiator = initiator,
NextRun = nextRun
@@ -237,7 +242,7 @@ namespace PARR.TemplateMatcher
if (!existingTemplates.Any()) return;
var job = await GetJobWithGroupAsync(jobId);
var job = await GetJobWithGroupAndAutoControlAsync(jobId);
if (job == null) return;
var currentUnitIds = await GetExpectedUnitIdsAsync(jobId);
@@ -264,8 +269,8 @@ namespace PARR.TemplateMatcher
else
{
targetStatus = TemplateStatusTypeEnum.Unused;
targetIsActiveTemplate = false;
targetIsActiveSchedule = false;
targetIsActiveTemplate = DefaultUnusedTemplateState;
targetIsActiveSchedule = DefaultUnusedScheduleState;
logger.LogInformation("Шаблон {TemplateId} (UnitId {UnitId}) → деактивация.", template.Id, template.UnitId);
}
@@ -399,10 +404,11 @@ namespace PARR.TemplateMatcher
}
private async Task<Job?> GetJobWithGroupAsync(Guid jobId)
private async Task<Job?> GetJobWithGroupAndAutoControlAsync(Guid jobId)
{
return await jobService.Get()
.Include(j => j.Group)
.Include(j => j.AutoControl)
.FirstOrDefaultAsync(j => j.Id == jobId);
}