Инициализировать репозиторий «Дейл»
Первый коммит: модульный монолит ядра (.NET 10) и gRPC-сервисы ai/ml/telegram, фронтенд Vue 3/Vite/Tailwind, документация (ТЗ, инструкция пользователя, техдокументация, код-стайл), бэклог, скрипты развёртывания и архив прототипа LeadRadar.
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
namespace Deal.Modules.Discovery.Application.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Полная запись нового кандидата задачи (INSERT disc_candidates; discovery.py L435–450).
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Write-модель: содержит только заполняемые при добавлении поля. Служебные значения INSERT прототипа
|
||||
/// L436–449 проставляет хранилище: Participants=NULL, LangRu=NULL, Marks=«[]», Topics=«[]», FitRatio=NULL,
|
||||
/// Status=<c>new</c>, AutoJoined=false, JoinFailures=0; CreatedAt/UpdatedAt — UTC-now.
|
||||
/// </remarks>
|
||||
public sealed record DiscoveryCandidateRow
|
||||
{
|
||||
/// <summary>
|
||||
/// Подписанный id источника (первичный ключ DiscCandidates).
|
||||
/// </summary>
|
||||
public string DialogId { get; init; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Id задачи поиска.
|
||||
/// </summary>
|
||||
public string TaskId { get; init; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Имя источника (пустое → DialogId нормализует сервис).
|
||||
/// </summary>
|
||||
public string Name { get; init; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Username источника (пуст, если нет публичного username).
|
||||
/// </summary>
|
||||
public string Username { get; init; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Тип источника: channel|group|forum.
|
||||
/// </summary>
|
||||
public string Kind { get; init; } = "channel";
|
||||
|
||||
/// <summary>
|
||||
/// Цвет источника (дефолт «#666»).
|
||||
/// </summary>
|
||||
public string Hue { get; init; } = "#666";
|
||||
}
|
||||
Reference in New Issue
Block a user