Инициализировать репозиторий «Дейл»
Первый коммит: модульный монолит ядра (.NET 10) и gRPC-сервисы ai/ml/telegram, фронтенд Vue 3/Vite/Tailwind, документация (ТЗ, инструкция пользователя, техдокументация, код-стайл), бэклог, скрипты развёртывания и архив прототипа LeadRadar.
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
namespace Deal.Telegram.Telegram;
|
||||
|
||||
/// <summary>
|
||||
/// Результат чтения выборки источника для оценки кандидата (план Task 11; 1:1 discovery_read
|
||||
/// python-прототипа telegram.py L718–760: {ok, error, messages}).
|
||||
///
|
||||
/// ok=false — история недоступна (приватный/закрытый источник без членства), error="no_history";
|
||||
/// это НЕ ошибка сессии/RPC, а нормальный ответ контракта (ReadForEvalReply.ok=false).
|
||||
/// </summary>
|
||||
public sealed record DiscoveryReadResult
|
||||
{
|
||||
/// <summary>
|
||||
/// Код причины ok=false: история недоступна без членства (1:1 прототип L726).
|
||||
/// </summary>
|
||||
public const string NoHistoryError = "no_history";
|
||||
|
||||
/// <summary>
|
||||
/// Пустой успешный результат (limit ≤ 0 — выборка не запрашивалась, прототип L730–732).
|
||||
/// </summary>
|
||||
public static DiscoveryReadResult Empty { get; } = new(true, null, []);
|
||||
|
||||
/// <summary>
|
||||
/// Создаёт результат чтения выборки.
|
||||
/// </summary>
|
||||
/// <param name="ok">True — выборка получена; false — история недоступна.</param>
|
||||
/// <param name="error">Код причины при ok=false ("no_history"); иначе null.</param>
|
||||
/// <param name="messages">Сообщения выборки (форумы — по темам, topic_id/topic_title заполнены).</param>
|
||||
public DiscoveryReadResult(bool ok, string? error, IReadOnlyList<DiscoveryMessage> messages)
|
||||
{
|
||||
Ok = ok;
|
||||
Error = error;
|
||||
Messages = messages;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Создаёт результат «история недоступна» (ok=false, error=no_history, сообщений нет).
|
||||
/// </summary>
|
||||
public static DiscoveryReadResult NoHistory()
|
||||
=> new(false, NoHistoryError, []);
|
||||
|
||||
/// <summary>
|
||||
/// True — выборка получена; false — история недоступна без членства.
|
||||
/// </summary>
|
||||
public bool Ok { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Код причины при ok=false: "no_history"; иначе null.
|
||||
/// </summary>
|
||||
public string? Error { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Сообщения выборки (для обычных источников topic_id/topic_title пусты).
|
||||
/// </summary>
|
||||
public IReadOnlyList<DiscoveryMessage> Messages { get; }
|
||||
}
|
||||
Reference in New Issue
Block a user