Первый коммит: модульный монолит ядра (.NET 10) и gRPC-сервисы ai/ml/telegram, фронтенд Vue 3/Vite/Tailwind, документация (ТЗ, инструкция пользователя, техдокументация, код-стайл), бэклог, скрипты развёртывания и архив прототипа LeadRadar.
59 lines
2.5 KiB
C#
59 lines
2.5 KiB
C#
namespace Deal.Modules.Discovery.Application.Models;
|
||
|
||
/// <summary>
|
||
/// Создание задачи поиска — вход POST /api/discovery/tasks (DiscoveryTaskDraft: поля с дефолтами сервиса).
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// 1:1 с TaskCreate discovery_routes.py L50–60 и нормализацией create_task discovery.py L234–282: name — строка
|
||
/// (обязательная, Trim); description/keywords/minSubscribers/lang/autoJoin имеют дефолты в сервисе;
|
||
/// threshold/sampleSize/planJoins — null → дефолты (threshold/sampleSize — из настроек discEvalThreshold/
|
||
/// discEvalSample, planJoins — 1). plan_joins дополнительно проходит план-бюджет (DiscoveryPlanGuard).
|
||
/// </remarks>
|
||
public sealed record DiscoveryTaskDraft
|
||
{
|
||
/// <summary>
|
||
/// Название задачи (после Trim непустое — иначе 400 «Укажите название задачи»).
|
||
/// </summary>
|
||
public string Name { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// Описание ниши/цели (может быть пустым).
|
||
/// </summary>
|
||
public string Description { get; init; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// Ключевые слова поиска; null → пустой список (start до добавления ключей — 400).
|
||
/// </summary>
|
||
public IReadOnlyList<string>? Keywords { get; init; }
|
||
|
||
/// <summary>
|
||
/// Минимальное число участников; null → 0.
|
||
/// </summary>
|
||
public int? MinSubscribers { get; init; }
|
||
|
||
/// <summary>
|
||
/// Язык источников: ru|any; null/иное → ru.
|
||
/// </summary>
|
||
public string? Lang { get; init; }
|
||
|
||
/// <summary>
|
||
/// Порог подходящих сообщений, % (кламп 1..100); null → настройка discEvalThreshold.
|
||
/// </summary>
|
||
public int? Threshold { get; init; }
|
||
|
||
/// <summary>
|
||
/// Размер выборки сообщений при оценке (кламп ≥1); null → настройка discEvalSample.
|
||
/// </summary>
|
||
public int? SampleSize { get; init; }
|
||
|
||
/// <summary>
|
||
/// План авто-вступлений (1..discJoinLimit + бюджет); null → 1.
|
||
/// </summary>
|
||
public int? PlanJoins { get; init; }
|
||
|
||
/// <summary>
|
||
/// Авто-вступления воркером; null → false.
|
||
/// </summary>
|
||
public bool? AutoJoin { get; init; }
|
||
}
|