Files
tnsu-approval-route/backend/Tnsu.ApprovalRoute.Application/ListPartitioning/ListPartitioningOptions.cs
T
2026-08-17 15:33:54 +05:00

32 lines
2.2 KiB
C#

namespace Tnsu.ApprovalRoute.Application.ListPartitioning;
/// <summary>Настройки нумерованных партиций списков заявок (секция ListPartitioning в конфигурации).</summary>
public sealed class ListPartitioningOptions
{
/// <summary>
/// Порог элементов в списке данных, по достижении которого ставится задача на
/// создание следующей партиции (пары списков).
///
/// 5000 — не предел SharePoint на число элементов (их может быть миллионы), а
/// «list view threshold»: запросы, которым приходится просмотреть больше 5000
/// элементов без подходящего индекса, SharePoint отклоняет. Порог намеренно чуть
/// ниже, чтобы задача успела создать следующую партицию до того, как текущая
/// начнёт упираться.
/// </summary>
public int ItemCountThreshold { get; set; } = 4500;
/// <summary>
/// Через сколько блокировка провижининга считается брошенной и может быть
/// перехвачена (процесс упал, не сняв флаг). См. RequestType.ListPartitioningStartedAt.
/// </summary>
public TimeSpan StaleLockAfter { get; set; } = TimeSpan.FromMinutes(30);
/// <summary>
/// Проверять ли порог в эндпоинте «текущий список». false — эндпоинт только
/// отдаёт список, не обращаясь к SharePoint за числом элементов и никого не
/// ставя в очередь. Полезно, если SharePoint временно недоступен или нужно
/// приостановить автосоздание партиций, не трогая остальную логику.
/// </summary>
public bool CheckThresholdOnRead { get; set; } = true;
}