namespace Deal.Modules.Discovery.Application.Models; /// /// Полная запись нового кандидата задачи (INSERT disc_candidates; discovery.py L435–450). /// /// /// Write-модель: содержит только заполняемые при добавлении поля. Служебные значения INSERT прототипа /// L436–449 проставляет хранилище: Participants=NULL, LangRu=NULL, Marks=«[]», Topics=«[]», FitRatio=NULL, /// Status=new, AutoJoined=false, JoinFailures=0; CreatedAt/UpdatedAt — UTC-now. /// public sealed record DiscoveryCandidateRow { /// /// Подписанный id источника (первичный ключ DiscCandidates). /// public string DialogId { get; init; } = string.Empty; /// /// Id задачи поиска. /// public string TaskId { get; init; } = string.Empty; /// /// Имя источника (пустое → DialogId нормализует сервис). /// public string Name { get; init; } = string.Empty; /// /// Username источника (пуст, если нет публичного username). /// public string Username { get; init; } = string.Empty; /// /// Тип источника: channel|group|forum. /// public string Kind { get; init; } = "channel"; /// /// Цвет источника (дефолт «#666»). /// public string Hue { get; init; } = "#666"; }