From 96a1736ef5ba32e7e59c1adc584082a7239b27e0 Mon Sep 17 00:00:00 2001 From: Mikhail Kuznetsov Date: Mon, 8 Dec 2025 10:32:13 +1000 Subject: [PATCH] =?UTF-8?q?feat(templateMatcher):=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=B4?= =?UTF-8?q?=D0=B5=D1=80=D0=B6=D0=BA=D0=B0=20=D0=BD=D0=B0=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BA=20AutoControl.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PARR.TemplateMatcher/TemplateMatcher.cs | 26 +++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/PARR.TemplateMatcher/TemplateMatcher.cs b/PARR.TemplateMatcher/TemplateMatcher.cs index 5113240b..0e8d2ac0 100644 --- a/PARR.TemplateMatcher/TemplateMatcher.cs +++ b/PARR.TemplateMatcher/TemplateMatcher.cs @@ -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 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 GetJobWithGroupAsync(Guid jobId) + private async Task GetJobWithGroupAndAutoControlAsync(Guid jobId) { return await jobService.Get() .Include(j => j.Group) + .Include(j => j.AutoControl) .FirstOrDefaultAsync(j => j.Id == jobId); }