Инициализировать репозиторий «Дейл»

Первый коммит: модульный монолит ядра (.NET 10) и gRPC-сервисы
ai/ml/telegram, фронтенд Vue 3/Vite/Tailwind, документация (ТЗ,
инструкция пользователя, техдокументация, код-стайл), бэклог,
скрипты развёртывания и архив прототипа LeadRadar.
This commit is contained in:
Rustam Khalimov
2026-09-11 02:50:17 +03:00
commit 9e07568ddd
1402 changed files with 177470 additions and 0 deletions
@@ -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";
}