Auto approve (#21)
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/21
This commit was merged in pull request #21.
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
using Hangfire;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Tnsu.ApprovalRoute.Application.Approvals;
|
||||
|
||||
/// <summary>
|
||||
/// Рекуррентная задача автосогласования — тонкая обёртка над
|
||||
/// <see cref="AutoApproveService"/>: всё, что она добавляет сверху, — расписание,
|
||||
/// защита от наложения запусков и одна строка в логе с итогом.
|
||||
///
|
||||
/// Повторы отключены (Attempts = 0) намеренно, в отличие от
|
||||
/// CreateNextListPartitionJob: там повтор нужен, потому что пропуск задачи ломает
|
||||
/// сценарий целиком (список не создан — писать некуда). Здесь же следующий запуск
|
||||
/// придёт сам, через час, и сделает ровно ту же работу с актуальным состоянием —
|
||||
/// уже согласованные строки в выборку не попадут. Повторять упавший проход раньше
|
||||
/// этого смысла нет, а висящие в очереди повторы только прятали бы настоящую
|
||||
/// причину сбоя.
|
||||
/// </summary>
|
||||
[AutomaticRetry(Attempts = 0)]
|
||||
[DisableConcurrentExecution(timeoutInSeconds: 5 * 60)]
|
||||
public sealed class AutoApproveJob(AutoApproveService service, ILogger<AutoApproveJob> logger)
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор рекуррентной задачи в Hangfire. Константой — по нему задача и
|
||||
/// заводится, и снимается при выключении настройки (см. Program.cs): разъехавшись,
|
||||
/// эти два имени оставили бы в дашборде задачу, которую уже некому снять.
|
||||
/// </summary>
|
||||
public const string RecurringJobId = "auto-approve";
|
||||
|
||||
public async Task RunAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
var approved = await service.RunAsync(cancellationToken);
|
||||
logger.LogInformation("Автосогласование: строк согласовано автоматически — {Count}", approved);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user