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 = "мало сообщений";
}