feat(dal): в методе получения Id неиспользуемого шаблона добавлена проверка на Ok статус, чтобы не давать роботу ошибочные задания.

This commit is contained in:
Mikhail Kuznetsov
2026-02-20 15:57:51 +10:00
parent cf98658d21
commit 114f7ec083
7 changed files with 74 additions and 30 deletions

View File

@@ -1,5 +1,6 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using PARR.BLL.Domain.Mq;
using PARR.Common.Domain;
using PARR.Constants;
@@ -8,6 +9,7 @@ using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.Job;
using PARR.TemplateMatcher.Services.Interfaces;
using PARR.TemplateMatcher.Settings;
namespace PARR.TemplateMatcher.Services.Implementations;
@@ -22,6 +24,7 @@ internal class TemplateDeactivator : ITemplateDeactivator
private readonly ITemplateNameNormalizer namenormalizer;
private readonly ITemplateUpdaterMqSender sender;
private readonly SettingsFromDb settingsFromDb;
private readonly IOptions<TemplateSettings> templateSettings;
public TemplateDeactivator(
ILogger<TemplateDeactivator> logger,
@@ -29,7 +32,8 @@ internal class TemplateDeactivator : ITemplateDeactivator
IJobService jobService,
ITemplateNameNormalizer namenormalizer,
ITemplateUpdaterMqSender sender,
SettingsFromDb settingsFromDb
SettingsFromDb settingsFromDb,
IOptions<TemplateSettings> templateSettings
)
{
this.logger = logger;
@@ -38,6 +42,7 @@ internal class TemplateDeactivator : ITemplateDeactivator
this.namenormalizer = namenormalizer;
this.sender = sender;
this.settingsFromDb = settingsFromDb;
this.templateSettings = templateSettings;
}
public async Task<bool> DeactivateTemplateAsync(Template template, HistoryInitiator initiator)
@@ -70,12 +75,15 @@ internal class TemplateDeactivator : ITemplateDeactivator
.ThenInclude(g => g!.GroupType)
.FirstOrDefaultAsync(j => j.Id == settingsFromDb.JobIdForUnusedTemplates);
if (unusedJob == null)
{
logger.LogError("Job для деактивированных шаблонов не найден.");
return false;
}
unusedJob.TemplateNameMask = templateSettings.Value.UnusedTemplateNameMask;
// === Создаём временный Template для нормализации имени ===
var tempTemplateForName = new Template
{
@@ -96,7 +104,7 @@ internal class TemplateDeactivator : ITemplateDeactivator
TemplateId = template.Id,
JobId = unusedJob.Id,
UnitId = template.UnitId,
Name = expectedName + "_" + DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
Name = expectedName,
IsActiveTemplate = DefaultUnusedTemplateState,
IsActiveSchedule = DefaultUnusedScheduleState,
LastRun = template.LastRun,