SaaS-мониторинг Telegram: ядро (модули Cards/Kanban/Pipeline/Tenants/Settings/ Discovery, Api, Infrastructure), сервисы telegram/ai/ml/storage, фронт Vue, контракты и grpc-hosting, деплой-конфиги (dev/prod/observability/CI-раннер), Gitea Actions CI, документация (ТЗ, техдок, api-map, код-стайл, планы, бэклог). Текущее состояние: все этапы роадмапа 0–12 закрыты, сборка 5 sln 0/0, тесты 1340/130/52/38/9 зелёные.
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
using Deal.Telegram.Dialogs;
|
||||
namespace Deal.Telegram.Dialogs;
|
||||
|
||||
/// <summary>
|
||||
/// Реальная реализация <see cref="IBackfillPacer"/>
|
||||
/// </summary>
|
||||
public sealed class RandomBackfillPacer : IBackfillPacer
|
||||
{
|
||||
/// <inheritdoc />
|
||||
async Task IBackfillPacer.WaitAsync(
|
||||
double minSeconds,
|
||||
double maxSeconds,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
if (maxSeconds < 0 || minSeconds < 0 || minSeconds > maxSeconds)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException(nameof(maxSeconds), $"Некорректный диапазон паузы: [{minSeconds}, {maxSeconds}].");
|
||||
}
|
||||
|
||||
if (maxSeconds == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
double seconds = minSeconds == maxSeconds
|
||||
? minSeconds
|
||||
: minSeconds + Random.Shared.NextDouble() * (maxSeconds - minSeconds);
|
||||
await Task.Delay(TimeSpan.FromSeconds(seconds), cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user