Разбить модули Deal.Modules.* по назначению

Application проектов Discovery, Kanban, Pipeline, Settings, Tenants
разделён на Abstractions/Exceptions/Extensions/Models/Registrars/Services;
namespace приведён к путям, using потребителей мигрированы и
дедуплицированы (169 файлов), cref/FQN обновлены.
This commit is contained in:
Rustam Khalimov
2026-09-11 13:18:14 +03:00
parent 31c434ed93
commit cd0b3b606b
356 changed files with 14436 additions and 12906 deletions
@@ -1,6 +1,9 @@
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Abstractions;
/// <summary>
/// Единый порт хранилища карточек и контейнеров (таблицы Cards/Containers/LeadComments/CardMoves тенанта;
@@ -1,6 +1,9 @@
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Abstractions;
/// <summary>
/// Порт хранилища обучения ML: очередь MlOutbox + счётчик журнала CardMoves (Ruling 4, Task 5).
@@ -1,5 +1,8 @@
using Deal.Modules.Kanban.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;
namespace Deal.Modules.Kanban.Application.ColumnRules;
@@ -1,4 +1,9 @@
namespace Deal.Modules.Kanban.Application;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
namespace Deal.Modules.Kanban.Application.Extensions;
/// <summary>
/// Расширения символов для нормализации бюджетной валюты.
@@ -1,4 +1,9 @@
namespace Deal.Modules.Kanban.Application;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
namespace Deal.Modules.Kanban.Application.Models;
/// <summary>
/// Результат <see cref="FileKindDetector.Detect"/> — kind/label вложения (1:1 files.py detect L31–45).
@@ -1,4 +1,9 @@
namespace Deal.Modules.Kanban.Application;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
namespace Deal.Modules.Kanban.Application.Models;
/// <summary>
/// Реестр видов контейнеров (этап 9, T4): роль колонки в пространстве.
@@ -1,4 +1,9 @@
namespace Deal.Modules.Kanban.Application;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
namespace Deal.Modules.Kanban.Application.Models;
/// <summary>
/// Реестр пространств контейнеров (этап 9, T4): где показывается карточка.
@@ -1,4 +1,9 @@
namespace Deal.Modules.Kanban.Application;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
namespace Deal.Modules.Kanban.Application.Models;
/// <summary>
/// Реестр служебных (не-доски) колонок канбана (Ruling 1, constants.py SERVICE_COLS).
@@ -1,8 +1,12 @@
using Deal.Modules.Cards.Application.Abstractions;
using Deal.Modules.Cards.Application.Dtos;
using Deal.Modules.Cards.Application.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Models;
/// <summary>
/// Реестр префиксов коротких id модуля Kanban (Ruling 12, прототип store.uid).
@@ -1,6 +1,10 @@
using System.Security.Cryptography;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Models;
/// <summary>
/// Генератор коротких префиксных id модуля Kanban (Ruling 12, прототип store.uid = prefix + uuid4().hex[:12]).
@@ -1,7 +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 Microsoft.Extensions.DependencyInjection;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Services;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Registrars;
/// <summary>
/// DI-регистрация модуля Kanban. Паттерн «port &amp; adapter» (Ruling 12).
@@ -1,7 +1,13 @@
using Deal.Modules.Kanban.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.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Services;
/// <summary>
/// Нормализация бюджета «при поступлении»: приведение к форме хранения и пересчёт в целевую валюту
@@ -1,7 +1,10 @@
using Deal.Contracts.Integrations;
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Services;
/// <summary>
/// Файлы карточки — partial-часть <see cref="CardsService"/> (этап 9: тот же домен карточки):
@@ -5,12 +5,18 @@ using Deal.Modules.Cards.Application.Dtos;
using Deal.Modules.Cards.Application.Models;
using Deal.Modules.Kanban.Application.ColumnRules;
using Deal.Modules.Kanban.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;
// Алиас: статический класс ColumnRules лежит в одноимённом пространстве имён — внутри пространства имён
// Deal.Modules.Kanban.Application имя ColumnRules резолвится в пространство (CS0234), нужен явный алиас.
using KanbanColumnRules = Deal.Modules.Kanban.Application.ColumnRules.ColumnRules;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Services;
/// <summary>
/// Приватные помощники <see cref="CardsService"/> — partial-часть (C32: выделено из общего файла,
@@ -5,9 +5,15 @@ using Deal.Modules.Cards.Application.Dtos;
using Deal.Modules.Cards.Application.Models;
using Deal.Modules.Kanban.Application.ColumnRules;
using Deal.Modules.Kanban.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.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Services;
/// <summary>
/// Публичные операции карточек — partial-часть <see cref="CardsService"/> (C32: выделено из общего
@@ -1,7 +1,13 @@
using Deal.Modules.Kanban.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.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Services;
/// <summary>
/// Напоминания «Отложено» — partial-часть <see cref="CardsService"/> (этап 9: тот же домен карточки):
@@ -3,8 +3,11 @@ using Deal.Modules.Cards.Application.Abstractions;
using Deal.Modules.Cards.Application.Dtos;
using Deal.Modules.Cards.Application.Models;
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Services;
/// <summary>
/// Операции пространства «Выбранные» — partial-часть <see cref="CardsService"/> (этап 9: тот же домен
@@ -2,12 +2,18 @@ using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Kanban.Application.ColumnRules;
using Deal.Modules.Kanban.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;
// Алиас: статический класс ColumnRules лежит в одноимённом пространстве имён — внутри пространства имён
// Deal.Modules.Kanban.Application имя ColumnRules резолвится в пространство (CS0234), нужен явный алиас.
using KanbanColumnRules = Deal.Modules.Kanban.Application.ColumnRules.ColumnRules;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Services;
/// <summary>
/// Сервис карточек — единый домен карточки (дашборд и «Выбранные»): leads.py L151–279 + L509–551
@@ -1,10 +1,15 @@
using System.Text.Json;
using System.Text.Json.Serialization;
using Deal.Modules.Kanban.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.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Services;
/// <summary>
/// Сервис контейнеров (колонок/стадий/зон) и состояния колонок (colState) — этап 9, T4.
@@ -1,8 +1,13 @@
using Deal.Modules.Kanban.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.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Services;
/// <summary>
/// Пересчёт конверсий бюджетов карточек при смене курсов/целевой валюты (Ruling 7, план Task 12).
@@ -1,4 +1,9 @@
namespace Deal.Modules.Kanban.Application;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Registrars;
namespace Deal.Modules.Kanban.Application.Services;
/// <summary>
/// Чистый детектор типа вложения карточки (Ruling 4; 1:1 files.py detect L31–45).
@@ -1,7 +1,13 @@
using Deal.Modules.Kanban.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.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Services;
/// <summary>
/// Сервис правил хранения: автоархив и очистка архива/корзины по срокам — Ruling 8, план Task 10.
@@ -3,8 +3,11 @@ using Deal.Modules.Cards.Application.Abstractions;
using Deal.Modules.Cards.Application.Dtos;
using Deal.Modules.Cards.Application.Models;
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Registrars;
namespace Deal.Modules.Kanban.Application;
namespace Deal.Modules.Kanban.Application.Services;
/// <summary>
/// Чистое ядро ИИ-предложений колонок/ключей — план Task 14 L467–471, Ruling 3.