using Deal.Infrastructure.Persistence.Configurations; namespace Deal.Infrastructure.Persistence.Entities; /// /// Счётчик фиксированного окна в системной схеме public (этап 12, пакет B). /// /// /// Используется распределённым rate limiting (auth/api/gRPC-ингресс) и guard'ом попыток входа: значение /// общего счётчика видно всем инстансам core (ранее — память одного процесса). Строка живёт до /// (windowStart + длина окна), после чего удаляется фоновой уборкой. /// public sealed class RateLimitCounterEntity { /// /// Уникальный ключ счётчика (префикс политики/типа + партиция: IP, tenant-id или ip|login). /// public string Key { get; set; } = string.Empty; /// /// Начало текущего фиксированного окна (UTC; выровнено по длине окна). /// public DateTimeOffset WindowStart { get; set; } /// /// Момент, после которого строка считается устаревшей (windowStart + длина окна). /// public DateTimeOffset ExpiresAt { get; set; } /// /// Число потреблённых единиц в текущем окне. /// public int Count { get; set; } }