Первый коммит: модульный монолит ядра (.NET 10) и gRPC-сервисы ai/ml/telegram, фронтенд Vue 3/Vite/Tailwind, документация (ТЗ, инструкция пользователя, техдокументация, код-стайл), бэклог, скрипты развёртывания и архив прототипа LeadRadar.
43 lines
1.6 KiB
C#
43 lines
1.6 KiB
C#
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";
|
||
}
|