Первый коммит: модульный монолит ядра (.NET 10) и gRPC-сервисы ai/ml/telegram, фронтенд Vue 3/Vite/Tailwind, документация (ТЗ, инструкция пользователя, техдокументация, код-стайл), бэклог, скрипты развёртывания и архив прототипа LeadRadar.
111 lines
5.8 KiB
C#
111 lines
5.8 KiB
C#
namespace Deal.Telegram.Sessions;
|
|
|
|
/// <summary>
|
|
/// Канонические тексты причин сессионных ошибок (detail RPC и статус-поле GetStatus.error).
|
|
/// Тексты 1:1 с прототипом backend/app/services/telegram.py и перечнем строк плана
|
|
/// (задачи: «Telegram не подключён», «Сначала сохраните Telegram api_id и api_hash в настройках»,
|
|
/// «Неверный код», «Код истёк — запросите новый», «Неверный облачный пароль»).
|
|
/// </summary>
|
|
public static class SessionErrorMessages
|
|
{
|
|
/// <summary>
|
|
/// Ключи приложения не переданы ядром (INVALID_ARGUMENT).
|
|
/// </summary>
|
|
public const string NoApiKeys = "Сначала сохраните Telegram api_id и api_hash в настройках";
|
|
|
|
/// <summary>
|
|
/// Аккаунт тенанта не подключён — нет сессии (FAILED_PRECONDITION).
|
|
/// </summary>
|
|
public const string NotConnected = "Telegram не подключён";
|
|
|
|
/// <summary>
|
|
/// Неверный SMS-код входа (INVALID_ARGUMENT).
|
|
/// </summary>
|
|
public const string WrongCode = "Неверный код";
|
|
|
|
/// <summary>
|
|
/// SMS-код истёк, нужен новый (INVALID_ARGUMENT).
|
|
/// </summary>
|
|
public const string CodeExpired = "Код истёк — запросите новый";
|
|
|
|
/// <summary>
|
|
/// Неверный облачный пароль 2FA (INVALID_ARGUMENT).
|
|
/// </summary>
|
|
public const string WrongPassword = "Неверный облачный пароль";
|
|
|
|
/// <summary>
|
|
/// SendCode вызван вне фазы "code" (FAILED_PRECONDITION).
|
|
/// </summary>
|
|
public const string CodeNotRequested = "Код не запрашивался — начните вход по номеру телефона";
|
|
|
|
/// <summary>
|
|
/// SendPassword вызван вне фазы "password" (FAILED_PRECONDITION).
|
|
/// </summary>
|
|
public const string PasswordNotRequested = "2FA-пароль не запрашивался — сначала отправьте код";
|
|
|
|
/// <summary>
|
|
/// Metadata tenant-id отсутствует или пуст (UNAUTHENTICATED).
|
|
/// </summary>
|
|
public const string TenantIdMissing = "tenant-id отсутствует в metadata";
|
|
|
|
/// <summary>
|
|
/// Некорректный tenant-id (INVALID_ARGUMENT).
|
|
/// </summary>
|
|
public const string InvalidTenantId = "Некорректный tenant-id в metadata";
|
|
|
|
/// <summary>
|
|
/// Telegram/сеть недоступны (UNAVAILABLE).
|
|
/// </summary>
|
|
public const string TelegramUnavailable = "Telegram недоступен — повторите попытку позже";
|
|
|
|
/// <summary>
|
|
/// Ядро (gRPC-ингресс) недоступно — PushMessage/SyncDialogs не доставлены (UNAVAILABLE).
|
|
/// </summary>
|
|
public const string IngressUnavailable = "Ядро недоступно — повторите попытку позже";
|
|
|
|
/// <summary>
|
|
/// Диалог не найден в аккаунте/кэше сущностей сессии (INVALID_ARGUMENT).
|
|
/// </summary>
|
|
public const string UnknownDialog = "Источник не найден в аккаунте — обновите список каналов";
|
|
|
|
/// <summary>
|
|
/// Пустой username вступления (INVALID_ARGUMENT; 1:1 ValueError discovery_join L828).
|
|
/// </summary>
|
|
public const string JoinUsernameMissing = "Не указан username для вступления";
|
|
|
|
/// <summary>
|
|
/// Поисковый запрос длиннее верхней границы (INVALID_ARGUMENT; защита границы сервиса).
|
|
/// </summary>
|
|
public const string SearchQueryTooLong = "Слишком длинный поисковый запрос";
|
|
|
|
/// <summary>
|
|
/// Username вступления длиннее лимита Telegram (INVALID_ARGUMENT).
|
|
/// </summary>
|
|
public const string UsernameTooLong = "Слишком длинный username";
|
|
|
|
/// <summary>
|
|
/// Внутренняя ошибка сервиса (INTERNAL; сбой реализации, а не транспорт/сеть).
|
|
/// </summary>
|
|
public const string InternalError = "Внутренняя ошибка сервиса — повторите попытку позже";
|
|
|
|
/// <summary>
|
|
/// По username найден не канал/группа (личный чат/бот) — вступить нельзя (INVALID_ARGUMENT).
|
|
/// </summary>
|
|
public const string JoinTargetNotChannel = "По этому username найден не канал/группа — вступить нельзя";
|
|
|
|
/// <summary>
|
|
/// Некорректный (неподписанный) id диалога в запросе (INVALID_ARGUMENT).
|
|
/// </summary>
|
|
public const string InvalidDialogId = "Некорректный id источника";
|
|
|
|
/// <summary>
|
|
/// Телефон не зарегистрирован в Telegram (регистрация из сервиса не выполняется).
|
|
/// </summary>
|
|
public const string SignUpRequired = "Номер не зарегистрирован в Telegram — зарегистрируйте его в приложении Telegram";
|
|
|
|
/// <summary>
|
|
/// Ключ шифрования сессий не задан в env (служебная ошибка конфигурации).
|
|
/// </summary>
|
|
public const string SessionKeyNotConfigured = "Ключ шифрования сессий не задан (DEAL_TELEGRAM_SESSION_KEY)";
|
|
}
|