namespace Deal.Modules.Discovery.Application; // Часть DiscoveryWorkerService: константы — действия тика, пороги/размеры воркера и метки кандидатов // (1:1 python discovery_worker L5–6/L74–89). public sealed partial class DiscoveryWorkerService { // ── Действия тика (python discovery_worker L5–6) ── /// /// Тик: работы нет (паузы/нет задач/заняты шаги других задач). /// public const string ActionNone = "none"; /// /// Тик: выполнен шаг поиска/закрыт проход ключей. /// public const string ActionSearch = "search"; /// /// Тик: кандидат оценён и переведён в review. /// public const string ActionReview = "review"; /// /// Тик: кандидат пропущен (мало участников/язык/мало подходящих/3 неудачи join). /// public const string ActionSkip = "skip"; /// /// Тик: авто-вступление выполнено. /// public const string ActionJoin = "join"; /// /// Тик: кандидат отклонён повторной проверкой перед авто-вступлением. /// public const string ActionReject = "reject"; /// /// Тик: FloodWait — стоп авто-вступлений до конца суток. /// public const string ActionFlood = "flood"; /// /// Тик: сбой шага (не роняет задачу/воркер). /// public const string ActionError = "error"; /// /// Тик: задача выполнила план вступлений — done. /// public const string ActionDone = "done"; // ── Пороги/размеры воркера (python L74–89) ── // Минимальный объём содержательной выборки для вердикта оценки (python _MIN_CONTENT L77). private const int MinContentMessages = 3; // Ошибки поиска одного ключа подряд, после которых ключ пропускается (python L80). private const int SearchErrorsToSkip = 3; // Неудачные авто-вступления подряд, после которых кандидат удаляется (python L417–419). private const int MaxJoinFailures = 3; // Верхняя граница результатов глобального поиска (прототип discovery_search default 30). private const int SearchResultLimit = 30; // ── Метки кандидата (marks; python discovery_worker L85–89) ── /// /// Метка: число участников не подтверждено (minSubscribers задан, participants неизвестны). /// public const string MarkParticipantsNotConfirmed = "участники не подтверждены"; /// /// Метка: язык не подтверждён (доля кириллицы между порогами). /// public const string MarkLangNotConfirmed = "язык не подтверждён"; /// /// Метка: канал, история недоступна без членства (контент не оценён). /// public const string MarkChannelNoHistory = "канал: история недоступна"; /// /// Метка: закрытая группа — история скрыта, вступите сами (контент не оценён). /// public const string MarkClosedGroup = "закрытая группа (история скрыта) — вступите сами"; /// /// Метка: содержательных сообщений выборки меньше трёх (решает человек). /// public const string MarkFewMessages = "мало сообщений"; }