Разбить модули Deal.Modules.* по назначению
Application проектов Discovery, Kanban, Pipeline, Settings, Tenants разделён на Abstractions/Exceptions/Extensions/Models/Registrars/Services; namespace приведён к путям, using потребителей мигрированы и дедуплицированы (169 файлов), cref/FQN обновлены.
This commit is contained in:
+7
-1
@@ -1,4 +1,10 @@
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application.Abstractions;
|
||||
|
||||
/// <summary>
|
||||
/// Порт «пейсера» Discovery: паузы между сетевыми действиями (план Task 18, Ruling 10).
|
||||
+7
-1
@@ -1,4 +1,10 @@
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application.Abstractions;
|
||||
|
||||
/// <summary>
|
||||
/// Счётчик ошибок поиска одного ключа по задачам (discovery_worker._search_errors L82, план Task 18).
|
||||
+5
-1
@@ -1,6 +1,10 @@
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Abstractions;
|
||||
|
||||
/// <summary>
|
||||
/// Порт хранилища Discovery: таблицы DiscTasks/DiscCandidates/DiscBlacklist/DiscLog схемы тенанта (Ruling 9, Task 17).
|
||||
+7
-1
@@ -1,4 +1,10 @@
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application.Exceptions;
|
||||
|
||||
/// <summary>
|
||||
/// Доменная ошибка запроса Discovery — 400-семантика (аналог ValueError discovery.py).
|
||||
+5
-1
@@ -1,6 +1,10 @@
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Extensions;
|
||||
|
||||
internal static class DiscoveryTaskPatchExtensions
|
||||
{
|
||||
@@ -6,21 +6,21 @@ namespace Deal.Modules.Discovery.Application.Models;
|
||||
/// <remarks>
|
||||
/// Поля 1:1 с _candidate_view discovery.py L140–158 и строкой disc_candidates (db.py L159–176). marks/topics —
|
||||
/// JSON-колонки, наружу всегда списки (marks — строки-метки, topics — элементы <see cref="DiscoveryTopicDto"/> для
|
||||
/// форумов). Статус — <see cref="Deal.Modules.Discovery.Application.DiscoveryCandidateStatuses"/>; переводы в
|
||||
/// форумов). Статус — <see cref="Deal.Modules.Discovery.Application.Models.DiscoveryCandidateStatuses"/>; переводы в
|
||||
/// joined/rejected — только через mark_joined/mark_rejected.
|
||||
/// </remarks>
|
||||
/// <param name="DialogId">Подписанный id источника (первичный ключ кандидата; как Dialogs.Id).</param>
|
||||
/// <param name="TaskId">Id задачи поиска, которой принадлежит кандидат.</param>
|
||||
/// <param name="Name">Отображаемое имя источника (пусто → DialogId).</param>
|
||||
/// <param name="Username">Username (handle) источника; пуст, если нет публичного username.</param>
|
||||
/// <param name="Kind">Тип источника: channel|group|forum (см. <see cref="Deal.Modules.Discovery.Application.DiscoveryCandidateKinds"/>).</param>
|
||||
/// <param name="Kind">Тип источника: channel|group|forum (см. <see cref="Deal.Modules.Discovery.Application.Models.DiscoveryCandidateKinds"/>).</param>
|
||||
/// <param name="Hue">Цвет источника из палитры DIALOG_HUES (hex «#rrggbb»; дефолт «#666»).</param>
|
||||
/// <param name="Participants">Число участников (после discovery_info); null — неизвестно.</param>
|
||||
/// <param name="LangRu">Язык источника: true — русский, false — не русский, null — не определён.</param>
|
||||
/// <param name="Marks">Метки оценки («закрытая группа (история скрыта)», «мало сообщений», …).</param>
|
||||
/// <param name="Topics">Оценка тем форума (kind=forum; для каналов/групп пуст).</param>
|
||||
/// <param name="FitRatio">Доля подходящих сообщений оценки (0..1); null — контент не оценён.</param>
|
||||
/// <param name="Status">Статус кандидата (см. <see cref="Deal.Modules.Discovery.Application.DiscoveryCandidateStatuses"/>).</param>
|
||||
/// <param name="Status">Статус кандидата (см. <see cref="Deal.Modules.Discovery.Application.Models.DiscoveryCandidateStatuses"/>).</param>
|
||||
/// <param name="AutoJoined">Вступили автоматически (воркером); false — вручную (join из UI).</param>
|
||||
/// <param name="JoinFailures">Неудачные авто-вступления подряд (3 → кандидат удаляется, Task 18).</param>
|
||||
/// <param name="CreatedAt">Время добавления, epoch-ms.</param>
|
||||
|
||||
+7
-1
@@ -1,4 +1,10 @@
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Типы источников-кандидатов Discovery (колонка DiscCandidates.Kind; api-map §4.8, discovery_worker _kind_code).
|
||||
+7
-1
@@ -1,4 +1,10 @@
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Статусы кандидата Discovery (колонка DiscCandidates.Status; discovery.py L171, api-map §4.8).
|
||||
+7
-1
@@ -1,4 +1,10 @@
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Счётчики прогресса задачи поиска (колонки DiscTasks Found/Evaluated/Joined/Rejected; discovery.py L359–368).
|
||||
+7
-1
@@ -1,4 +1,10 @@
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Агрегат оценки выборки сообщений (python evaluate_sample L197–226: fit_count/total/fit_ratio/per_message).
|
||||
+6
-1
@@ -1,6 +1,11 @@
|
||||
using System.Security.Cryptography;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Префиксы коротких id модуля Discovery и их генерация (прототип store.uid в discovery.py).
|
||||
@@ -5,12 +5,12 @@ namespace Deal.Modules.Discovery.Application.Models;
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Поля 1:1 с _log_view discovery.py L170–177 и строкой disc_log (db.py L189–195). Событие — каталог
|
||||
/// <see cref="Deal.Modules.Discovery.Application.DiscoveryLogEvents"/> (search|skip|review|join_auto|join_manual|
|
||||
/// <see cref="Deal.Modules.Discovery.Application.Models.DiscoveryLogEvents"/> (search|skip|review|join_auto|join_manual|
|
||||
/// reject|flood|error|done|…). Список — последние события задачи, новые сверху (ORDER BY created_at DESC).
|
||||
/// </remarks>
|
||||
/// <param name="Id">Короткий id записи (префикс <c>dl_</c>).</param>
|
||||
/// <param name="TaskId">Id задачи поиска.</param>
|
||||
/// <param name="Event">Событие (см. <see cref="Deal.Modules.Discovery.Application.DiscoveryLogEvents"/>).</param>
|
||||
/// <param name="Event">Событие (см. <see cref="Deal.Modules.Discovery.Application.Models.DiscoveryLogEvents"/>).</param>
|
||||
/// <param name="Text">Текст/детали события (русская строка 1:1 с прототипом).</param>
|
||||
/// <param name="CreatedAt">Время события, epoch-ms.</param>
|
||||
public sealed record DiscoveryLogDto(
|
||||
|
||||
+7
-1
@@ -1,4 +1,10 @@
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application.Models;
|
||||
|
||||
/// <summary>
|
||||
/// События лога задачи Discovery (колонка DiscLog.Event; discovery.py L187–188, api-map §3.8).
|
||||
+7
-1
@@ -1,4 +1,10 @@
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Вердикт фита одного сообщения (python evaluate_message L174–194).
|
||||
@@ -5,7 +5,7 @@ namespace Deal.Modules.Discovery.Application.Models;
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Поля 1:1 с _task_view discovery.py L116–137 и строкой disc_tasks (db.py L136–156). JSON-поле keywords
|
||||
/// наружу всегда список строк; статус — <see cref="Deal.Modules.Discovery.Application.DiscoveryTaskStatuses"/>.
|
||||
/// наружу всегда список строк; статус — <see cref="Deal.Modules.Discovery.Application.Models.DiscoveryTaskStatuses"/>.
|
||||
/// createdAt/updatedAt — epoch-ms (времена хранятся UTC, на границе переводятся в ms — конвенция проекта).
|
||||
/// </remarks>
|
||||
/// <param name="Id">Короткий id задачи (префикс <c>dt_</c>).</param>
|
||||
@@ -18,7 +18,7 @@ namespace Deal.Modules.Discovery.Application.Models;
|
||||
/// <param name="SampleSize">Размер выборки сообщений при оценке (≥1; дефолт discEvalSample).</param>
|
||||
/// <param name="PlanJoins">План авто-вступлений задачи (1..discJoinLimit; занимает суточный бюджет).</param>
|
||||
/// <param name="AutoJoin">Авто-вступления воркером включены (иначе кандидатов вступает человек).</param>
|
||||
/// <param name="Status">Статус задачи (см. <see cref="Deal.Modules.Discovery.Application.DiscoveryTaskStatuses"/>).</param>
|
||||
/// <param name="Status">Статус задачи (см. <see cref="Deal.Modules.Discovery.Application.Models.DiscoveryTaskStatuses"/>).</param>
|
||||
/// <param name="SearchIdx">Индекс текущего ключа поиска (прогресс прохода по keywords).</param>
|
||||
/// <param name="SearchDone">Проход по всем ключам завершён (searchIdx ≥ keywords.Count).</param>
|
||||
/// <param name="Found">Найдено кандидатов (счётчик found).</param>
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace Deal.Modules.Discovery.Application.Models;
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Write-модель: содержит полное состояние новой задачи, включая готовый id (<c>dt_...</c>, генерирует модуль —
|
||||
/// <see cref="Deal.Modules.Discovery.Application.DiscoveryIdPrefixes"/>). Служебные значения, вычисленные до
|
||||
/// <see cref="Deal.Modules.Discovery.Application.Models.DiscoveryIdPrefixes"/>). Служебные значения, вычисленные до
|
||||
/// записи: Status=<c>draft</c>, SearchIdx=0, SearchDone=false, счётчики Found/Evaluated/Joined/Rejected=0 —
|
||||
/// как в INSERT прототипа discovery.py L260–280. CreatedAt/UpdatedAt проставляет хранилище (UTC-now);
|
||||
/// keywords адаптер сериализует в JSON при записи.
|
||||
|
||||
+7
-1
@@ -1,4 +1,10 @@
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Статусы задачи поиска Discovery (колонка DiscTasks.Status; discovery.py L147, api-map §4.8).
|
||||
+6
-1
@@ -1,6 +1,11 @@
|
||||
using Deal.Contracts.Integrations.Models;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Группа сообщений форума по теме (python group_by_topic L96–117).
|
||||
+7
-1
@@ -1,4 +1,10 @@
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Результат одного тика discovery-воркера (python discovery_worker L5–6: {action, taskId}).
|
||||
+10
-2
@@ -1,7 +1,15 @@
|
||||
using Deal.Modules.Settings.Application;
|
||||
using Deal.Modules.Settings.Application.Abstractions;
|
||||
using Deal.Modules.Settings.Application.Models;
|
||||
using Deal.Modules.Settings.Application.Registrars;
|
||||
using Deal.Modules.Settings.Application.Services;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
/// <summary>
|
||||
/// DI-регистрация модуля Discovery. Паттерн «port & adapter» (Ruling 9, план Task 17).
|
||||
+10
-2
@@ -1,7 +1,15 @@
|
||||
using System.Text.Json;
|
||||
using Deal.Modules.Settings.Application;
|
||||
using Deal.Modules.Settings.Application.Abstractions;
|
||||
using Deal.Modules.Settings.Application.Models;
|
||||
using Deal.Modules.Settings.Application.Registrars;
|
||||
using Deal.Modules.Settings.Application.Services;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Бан-гард авто-вступлений Discovery: суточный лимит, flood-день, стоп-кран (1:1 ban_guard.py L1–81, план Task 18, Ruling 10).
|
||||
+5
-1
@@ -1,6 +1,10 @@
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Сервис чёрного списка Discovery — добавление/снятие/список (1:1 add_blacklist/remove_blacklist/list_blacklist L568–589).
|
||||
+5
-1
@@ -1,7 +1,11 @@
|
||||
using Deal.Contracts.Integrations;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Сервис кандидатов Discovery — add с исключениями, set_candidate, review-перевод, mark_joined/rejected, delete (1:1 L385–563).
|
||||
+9
-2
@@ -2,9 +2,16 @@ using System.Text;
|
||||
using Deal.Contracts.Integrations;
|
||||
using Deal.Contracts.Integrations.Models;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Settings.Application;
|
||||
using Deal.Modules.Settings.Application.Abstractions;
|
||||
using Deal.Modules.Settings.Application.Models;
|
||||
using Deal.Modules.Settings.Application.Registrars;
|
||||
using Deal.Modules.Settings.Application.Services;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Оценка содержания кандидата: фит сообщений под задачу поиска (1:1 discovery_eval.py целиком, план Task 18).
|
||||
+7
-1
@@ -1,4 +1,10 @@
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Детектор «русскости» выборки сообщений кандидата (1:1 discovery_eval.detect_lang_ru L62–83, план Task 18).
|
||||
+5
-1
@@ -1,6 +1,10 @@
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Сервис лога задач Discovery — запись событий и чтение истории (1:1 add_log/task_log discovery.py L594–608).
|
||||
+10
-2
@@ -1,6 +1,14 @@
|
||||
using Deal.Modules.Settings.Application;
|
||||
using Deal.Modules.Settings.Application.Abstractions;
|
||||
using Deal.Modules.Settings.Application.Models;
|
||||
using Deal.Modules.Settings.Application.Registrars;
|
||||
using Deal.Modules.Settings.Application.Services;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Продовая реализация <see cref="IDiscoveryPacer"/>: случайная пауза из настроек тенанта (ban_guard L44–56).
|
||||
+10
-2
@@ -1,6 +1,14 @@
|
||||
using Deal.Modules.Settings.Application;
|
||||
using Deal.Modules.Settings.Application.Abstractions;
|
||||
using Deal.Modules.Settings.Application.Models;
|
||||
using Deal.Modules.Settings.Application.Registrars;
|
||||
using Deal.Modules.Settings.Application.Services;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
/// <summary>
|
||||
/// План-бюджет авто-вступлений Discovery: лимит и правило суммы (python L80–111, Ruling 9).
|
||||
+6
-1
@@ -1,6 +1,11 @@
|
||||
using System.Collections.Concurrent;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Потокобезопасная реализация <see cref="IDiscoverySearchErrorCounter"/> (ConcurrentDictionary + TTL).
|
||||
+9
-2
@@ -1,7 +1,14 @@
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Settings.Application;
|
||||
using Deal.Modules.Settings.Application.Abstractions;
|
||||
using Deal.Modules.Settings.Application.Models;
|
||||
using Deal.Modules.Settings.Application.Registrars;
|
||||
using Deal.Modules.Settings.Application.Services;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Сервис задач поиска Discovery — create/patch/delete/start/pause/advance/bump (план Task 17, 1:1 discovery.py L234–381).
|
||||
+7
-1
@@ -1,4 +1,10 @@
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
// Часть DiscoveryWorkerService: константы — действия тика, пороги/размеры воркера и метки кандидатов
|
||||
// (1:1 python discovery_worker L5–6/L74–89).
|
||||
+5
-1
@@ -1,8 +1,12 @@
|
||||
using Deal.Contracts.Integrations;
|
||||
using Deal.Contracts.Integrations.Models;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
// Часть DiscoveryWorkerService: шаг оценки кандидата status='new' — инфо источника, выборка, язык, объём
|
||||
// и оценка содержания (python _eval_step L228–315/_evaluate_content L318–356) + перевод в review.
|
||||
+5
-1
@@ -1,8 +1,12 @@
|
||||
using Deal.Contracts.Integrations;
|
||||
using Deal.Contracts.Integrations.Models;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
// Часть DiscoveryWorkerService: общие хелперы — распознавание FloodWait (IsFlood), нормализация kind
|
||||
// источника (KindCode) и тексты сообщений для оценки (GroupTexts).
|
||||
+5
-1
@@ -1,8 +1,12 @@
|
||||
using Deal.Contracts.Integrations;
|
||||
using Deal.Contracts.Integrations.Models;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
// Часть DiscoveryWorkerService: шаг авто-вступления кандидата status='review' — повторные проверки,
|
||||
// пауза, join, обработка FloodWait/неудач (python _join_step L359–439).
|
||||
+5
-1
@@ -1,8 +1,12 @@
|
||||
using Deal.Contracts.Integrations;
|
||||
using Deal.Contracts.Integrations.Models;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
// Часть DiscoveryWorkerService: шаг поиска — один ключ keywords[SearchIdx] → кандидаты + advance_search
|
||||
// (python _search_step L177–225) и лог завершения прохода.
|
||||
+5
-1
@@ -1,8 +1,12 @@
|
||||
using Deal.Contracts.Integrations;
|
||||
using Deal.Contracts.Integrations.Models;
|
||||
using Deal.Modules.Discovery.Application.Models;
|
||||
using Deal.Modules.Discovery.Application.Abstractions;
|
||||
using Deal.Modules.Discovery.Application.Exceptions;
|
||||
using Deal.Modules.Discovery.Application.Extensions;
|
||||
using Deal.Modules.Discovery.Application.Registrars;
|
||||
|
||||
namespace Deal.Modules.Discovery.Application;
|
||||
namespace Deal.Modules.Discovery.Application.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Воркер Discovery: поиск → оценка → авто-вступление, один шаг за тик (1:1 discovery_worker.py целиком, план Task 18, Ruling 10).
|
||||
Reference in New Issue
Block a user