namespace Deal.Modules.Settings.Application.Models; /// /// Публичный снимок настроек тенанта — тело ответа GET/PATCH /api/settings. /// public sealed record PublicSettingsDto { /// /// Авто-архивация выполненных/отклонённых карточек. /// public bool AutoArchive { get; init; } /// /// Дней до авто-архивации карточки /// public int ArchiveAfterDays { get; init; } /// /// Дней хранения в архиве до очистки. /// public int ArchiveClearDays { get; init; } /// /// Дней хранения в корзине до очистки. /// public int TrashClearDays { get; init; } /// /// Минимальная длина сообщения для -1 фильтра /// public int MinLen { get; init; } /// /// Стоп-фразы -1 фильтра. /// public IReadOnlyList StopPhrases { get; init; } = Array.Empty(); /// /// Локальный ML-слой включён. /// public bool MlEnabled { get; init; } /// /// Полный выключатель ИИ /// public bool AiEnabled { get; init; } /// /// ИИ-фильтр (страж) входящих включён. /// public bool AiFilterEnabled { get; init; } /// /// Промпт классификатора входящих /// public string AiPrompt { get; init; } = string.Empty; /// /// Промпт ИИ-фильтра входящих. /// public string AiFilterPrompt { get; init; } = string.Empty; /// /// Промпт структуры карточки /// public string CardPrompt { get; init; } = string.Empty; /// /// Тип собираемых заявок /// public string WantedType { get; init; } = string.Empty; /// /// Без указания суммы не создавать карточку найма. /// public bool BudgetRequiredHire { get; init; } /// /// Без указания суммы не создавать карточку заказа. /// public bool BudgetRequiredOrder { get; init; } /// /// Подпись найма на карточке. /// public string HireLabel { get; init; } = string.Empty; /// /// Подпись разового заказа на карточке. /// public string OrderLabel { get; init; } = string.Empty; /// /// Описание сферы /// public string DomainDescription { get; init; } = string.Empty; /// /// Общие слова-маркеры заявок сферы. /// public IReadOnlyList DomainKeywords { get; init; } = Array.Empty(); /// /// Маркеры найма /// public IReadOnlyList HireMarkers { get; init; } = Array.Empty(); /// /// Термины грейдов/уровней. /// public IReadOnlyList LevelTerms { get; init; } = Array.Empty(); /// /// Маркеры резюме соискателей. /// public IReadOnlyList ResumeMarkers { get; init; } = Array.Empty(); /// /// Отсекать резюме соискателей на. /// public bool BlockResumes { get; init; } /// /// Глобальные исключения по ключевым словам/фразам/технологиям /// public IReadOnlyList ExcludeKeywords { get; init; } = Array.Empty(); /// /// Глобальные исключения по локации/языку /// public IReadOnlyList ExcludeLocations { get; init; } = Array.Empty(); /// /// Глобальные исключения по типу заявки /// public IReadOnlyList ExcludeTypes { get; init; } = Array.Empty(); /// /// Нижняя граница глобального исключения по бюджету /// public int ExcludeBudgetFrom { get; init; } /// /// Верхняя граница глобального исключения по бюджету /// public int ExcludeBudgetTo { get; init; } /// /// Личная библиотека промптов пользователя. /// public IReadOnlyList MyPrompts { get; init; } = Array.Empty(); /// /// Общие напоминания включены. /// public bool RemindersEnabled { get; init; } /// /// Конвертация бюджетов карточек включена. /// public bool ConversionOn { get; init; } /// /// Целевая валюта конвертации. /// public string TargetCurrency { get; init; } = string.Empty; /// /// Источник курсов /// public string RateSource { get; init; } = string.Empty; /// /// Авто-мониторинг новых чатов/каналов. /// public bool AutoMonitorNew { get; init; } /// /// Суточный лимит авто-вступлений Discovery /// public int DiscJoinLimit { get; init; } /// /// Нижняя граница паузы между авто-вступлениями, сек /// public int DiscJoinDelayMin { get; init; } /// /// Верхняя граница паузы между авто-вступлениями, сек /// public int DiscJoinDelayMax { get; init; } /// /// Размер выборки сообщений при оценке канала /// public int DiscEvalSample { get; init; } /// /// Процент подходящих сообщений для оценки канала /// public int DiscEvalThreshold { get; init; } /// /// Стоп-кран авто-вступлений Discovery. /// public bool DiscPaused { get; init; } /// /// Состояние колонок канбана. /// public IReadOnlyDictionary ColState { get; init; } = new Dictionary(); }