Добить структуру Api, Contracts, SharedKernel и сервисов

Deal.Api/Http -> Services/Models/Extensions; Contracts/Integrations
и SharedKernel/Tenants -> Abstractions/Models; extension-классы
telegram/ml -> Extensions. namespace/using/FQN мигрированы, using
дедуплицированы.
This commit is contained in:
Rustam Khalimov
2026-09-11 13:25:18 +03:00
parent 492950bdd0
commit e3a2692507
191 changed files with 1539 additions and 1350 deletions
@@ -1,10 +1,11 @@
using System.Text.Json;
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
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.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,8 +1,9 @@
using Deal.Api.Events;
using Deal.Api.Http;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Models;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
+3 -2
View File
@@ -1,4 +1,6 @@
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Api.Middleware;
using Deal.Modules.Tenants.Application.Abstractions;
using Deal.Modules.Tenants.Application.Extensions;
@@ -6,7 +8,6 @@ using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Microsoft.Extensions.Options;
using Deal.Api.Services;
using Deal.Api.Dtos;
// Имя конфигурационного типа совпадает с Microsoft.AspNetCore.Http.CookieOptions — фиксируем алиасом.
using CookieOptions = Deal.Api.Configuration.CookieOptions;
@@ -1,7 +1,9 @@
using System.Text.Json;
using Deal.Api.Endpoints.RequestModels;
using Deal.Api.Http;
using Deal.Contracts.Integrations;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
@@ -13,7 +15,6 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,6 +1,8 @@
using Deal.Api.Endpoints.RequestModels;
using Deal.Api.Events;
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Modules.Cards.Application.Abstractions;
using Deal.Modules.Cards.Application.Dtos;
using Deal.Modules.Cards.Application.Models;
@@ -18,7 +20,6 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,6 +1,8 @@
using System.Text.Json;
using Deal.Api.Endpoints.RequestModels;
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Models;
@@ -11,7 +13,6 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,7 +1,9 @@
using System.Text.Json;
using Deal.Api.Endpoints.RequestModels;
using Deal.Api.Http;
using Deal.Contracts.Integrations;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Discovery.Application.Abstractions;
using Deal.Modules.Discovery.Application.Exceptions;
@@ -14,7 +16,6 @@ using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Modules.Telegram.Application;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,5 +1,6 @@
using Deal.Api.Events;
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Api.Dtos;
@@ -1,9 +1,10 @@
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
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.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
+3 -2
View File
@@ -1,10 +1,11 @@
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Modules.Tenants.Application.Abstractions;
using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
+4 -3
View File
@@ -1,11 +1,12 @@
using Deal.Api.Http;
using Deal.Contracts.Integrations;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Pipeline.Application.Abstractions;
using Deal.Modules.Pipeline.Application.Models;
using Deal.Modules.Pipeline.Application.Registrars;
using Deal.Modules.Pipeline.Application.Services;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,10 +1,11 @@
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Modules.Tenants.Application.Abstractions;
using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,10 +1,11 @@
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Modules.Tenants.Application.Abstractions;
using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,4 +1,6 @@
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Api.Middleware;
using Deal.Modules.Tenants.Application.Abstractions;
using Deal.Modules.Tenants.Application.Extensions;
@@ -6,7 +8,6 @@ using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Microsoft.Extensions.Options;
using Deal.Api.Services;
using Deal.Api.Dtos;
using AspNetCoreCookieOptions = Microsoft.AspNetCore.Http.CookieOptions;
// Имя конфигурационного типа совпадает с Microsoft.AspNetCore.Http.CookieOptions — фиксируем алиасами.
@@ -1,4 +1,6 @@
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Api.Observability;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
@@ -9,7 +11,6 @@ using Deal.Infrastructure.Integrations.Services;
using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Microsoft.EntityFrameworkCore;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,10 +1,11 @@
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Modules.Tenants.Application.Abstractions;
using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,10 +1,11 @@
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Modules.Tenants.Application.Abstractions;
using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,6 +1,7 @@
using Deal.Api.Http;
using Deal.Infrastructure.Tenancy;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Infrastructure.Tenancy;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,12 +1,13 @@
using Deal.Api.Endpoints.RequestModels;
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Api.Telegram;
using Deal.Modules.Tenants.Application.Abstractions;
using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,11 +1,12 @@
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Modules.Tenants.Application.Abstractions;
using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Microsoft.Extensions.Options;
using Deal.Api.Services;
using Deal.Api.Dtos;
using CookieOptions = Deal.Api.Configuration.CookieOptions;
@@ -1,10 +1,11 @@
using Deal.Api.Endpoints.RequestModels;
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Modules.Pipeline.Application.Abstractions;
using Deal.Modules.Pipeline.Application.Models;
using Deal.Modules.Pipeline.Application.Registrars;
using Deal.Modules.Pipeline.Application.Services;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,9 +1,10 @@
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
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.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -2,7 +2,8 @@ using System.Text.Json;
using Deal.Api;
using Deal.Api.Dtos;
using Deal.Api.Services;
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
@@ -1,6 +1,7 @@
using Deal.Api.Http;
using Deal.Infrastructure.Services;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Infrastructure.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,7 +1,9 @@
using Deal.Api.Endpoints.RequestModels;
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Api.Telegram;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Telegram.Application;
using Deal.Modules.Telegram.Application.Models;
@@ -10,7 +12,6 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,8 +1,9 @@
using Deal.Api.Http;
using Deal.Contracts.Integrations;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Net.Codecrete.QrCodeGenerator;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Endpoints;
@@ -1,7 +1,8 @@
using Deal.Api.Services;
using Deal.Api.Dtos;
using Deal.Api.Models;
namespace Deal.Api.Http;
namespace Deal.Api.Extensions;
/// <summary>
/// Хелперы доступа к текущему пользователю запроса (минимальные API).
@@ -9,7 +9,8 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Deal.Api.Services;
using Deal.Api.Dtos;
@@ -14,7 +14,8 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Deal.Api.Services;
using Deal.Api.Dtos;
@@ -13,7 +13,8 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Deal.Api.Services;
using Deal.Api.Dtos;
@@ -1,12 +1,13 @@
using Deal.Api.Configuration;
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Modules.Tenants.Application.Abstractions;
using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Microsoft.Extensions.Options;
using Deal.Api.Services;
using Deal.Api.Dtos;
// Имя конфигурационного типа совпадает с Microsoft.AspNetCore.Http.CookieOptions — фиксируем алиасом.
using OperatorCookieOptions = Deal.Api.Configuration.OperatorCookieOptions;
@@ -1,9 +1,10 @@
using System.Threading.RateLimiting;
using Deal.Api.Configuration;
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Microsoft.AspNetCore.RateLimiting;
using Microsoft.Extensions.DependencyInjection;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Middleware;
@@ -1,13 +1,15 @@
using Deal.Api.Configuration;
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Modules.Tenants.Application.Abstractions;
using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.Options;
using Deal.Api.Services;
using Deal.Api.Dtos;
// Имя конфигурационного типа совпадает с Microsoft.AspNetCore.Http.CookieOptions — фиксируем алиасом.
using CookieOptions = Deal.Api.Configuration.CookieOptions;
@@ -1,7 +1,8 @@
using Deal.Api.Services;
using Deal.Api.Dtos;
using Deal.Api.Extensions;
namespace Deal.Api.Http;
namespace Deal.Api.Models;
/// <summary>
/// Текущий оператор запроса — кладёт OperatorSessionMiddleware в <c>HttpContext.Items</c> (Ruling 1).
@@ -1,7 +1,8 @@
using Deal.Api.Services;
using Deal.Api.Dtos;
using Deal.Api.Extensions;
namespace Deal.Api.Http;
namespace Deal.Api.Models;
/// <summary>
/// Текущий пользователь запроса — кладётся SessionMiddleware в <c>HttpContext.Items</c>.
@@ -14,7 +14,8 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.EntityFrameworkCore;
using Deal.Api.Services;
using Deal.Api.Dtos;
+6 -3
View File
@@ -8,12 +8,14 @@ using Deal.Api.Configuration;
using Deal.Api.Endpoints;
using Deal.Api.Events;
using Deal.Api.Hosting;
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Logging;
using Deal.Api.Middleware;
using Deal.Api.Observability;
using Deal.Api.Telegram;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Infrastructure;
using Deal.Infrastructure.Data;
using Deal.Infrastructure.Integrations.Abstractions;
@@ -53,7 +55,8 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.AspNetCore.HttpOverrides;
using Microsoft.AspNetCore.Server.Kestrel.Core;
using Microsoft.AspNetCore.Server.Kestrel.Https;
@@ -6,8 +6,10 @@ using Deal.Modules.Tenants.Application.Services;
using Microsoft.Extensions.DependencyInjection;
using Deal.Api.Services;
using Deal.Api.Dtos;
using Deal.Api.Extensions;
using Deal.Api.Models;
namespace Deal.Api.Http;
namespace Deal.Api.Services;
/// <summary>
/// Хелпер записи аудита действий пользователей тенанта и операторов (единая точка — <see cref="AuditService"/>).
@@ -1,7 +1,9 @@
using Deal.Api.Services;
using Deal.Api.Dtos;
using Deal.Api.Extensions;
using Deal.Api.Models;
namespace Deal.Api.Http;
namespace Deal.Api.Services;
/// <summary>
/// Общие ответы ошибок минимальных API: HTTP-код + <c>{"detail":"…"}</c> (формат прототипа, Ruling 10).
@@ -6,8 +6,10 @@ using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.Api.Services;
using Deal.Api.Dtos;
using Deal.Api.Extensions;
using Deal.Api.Models;
namespace Deal.Api.Http;
namespace Deal.Api.Services;
/// <summary>
/// Прикладной guard неудачных попыток входа (план Task 11, Ruling 5; этап 12, пакет B — хранилище на
@@ -9,7 +9,8 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Deal.Api.Dtos;
using Deal.Api;
using Deal.Api.Services;
@@ -3,8 +3,10 @@ using Deal.Api.Dtos;
using AspNetCoreCookieOptions = Microsoft.AspNetCore.Http.CookieOptions;
using CookieOptions = Deal.Api.Configuration.CookieOptions;
using Deal.Api.Extensions;
using Deal.Api.Models;
namespace Deal.Api.Http;
namespace Deal.Api.Services;
/// <summary>
/// Единая запись httpOnly-куки сессии тенант-пользователя (login/change-password/impersonation).
@@ -7,8 +7,10 @@ using Deal.Modules.Tenants.Application.Services;
using Microsoft.Extensions.DependencyInjection;
using Deal.Api.Services;
using Deal.Api.Dtos;
using Deal.Api.Extensions;
using Deal.Api.Models;
namespace Deal.Api.Http;
namespace Deal.Api.Services;
/// <summary>
/// RateLimiter фиксированного окна с состоянием в Postgres (этап 12, пакет B): лимиты переживают
@@ -1,10 +1,11 @@
using System.Threading.RateLimiting;
using Deal.Api.Http;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Api.Middleware;
using Grpc.Core;
using Grpc.Core.Interceptors;
using Microsoft.Extensions.DependencyInjection;
using Deal.Api.Services;
using Deal.Api.Dtos;
namespace Deal.Api.Telegram;
@@ -16,7 +16,8 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Grpc.Core;
using Deal.Api.Services;
using Deal.Api.Dtos;
@@ -1,5 +1,5 @@
using System.Text.Json;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
@@ -1,6 +1,6 @@
using Deal.Contracts.Integrations.Models;
namespace Deal.Contracts.Integrations;
namespace Deal.Contracts.Integrations.Abstractions;
/// <summary>
/// Порт ИИ-классификатора входящих сообщений (Ruling 5, план Task 6 L370388).
@@ -1,6 +1,6 @@
using Deal.Contracts.Integrations.Models;
namespace Deal.Contracts.Integrations;
namespace Deal.Contracts.Integrations.Abstractions;
/// <summary>
/// Порт ИИ-инструментов Discovery и генерации ключевых слов (Ruling 9, план Task 15/18/19).
@@ -1,6 +1,6 @@
using Deal.Contracts.Integrations.Models;
namespace Deal.Contracts.Integrations;
namespace Deal.Contracts.Integrations.Abstractions;
/// <summary>
/// Порт ИИ-предложений колонок и ключей — план Task 14 (L462491), Ruling 3.
@@ -1,6 +1,6 @@
using Deal.Contracts.Integrations.Models;
namespace Deal.Contracts.Integrations;
namespace Deal.Contracts.Integrations.Abstractions;
/// <summary>
/// Порт файлового хранилища вложений (Ruling 4, план Task 6; 1:1 <c>backend/app/services/object_store.py</c> L61107).
@@ -1,6 +1,6 @@
using Deal.Contracts.Integrations.Models;
namespace Deal.Contracts.Integrations;
namespace Deal.Contracts.Integrations.Abstractions;
/// <summary>
/// Порт клиента автономного ML-сервиса (Ruling 4, план Task 9 L333367).
@@ -1,6 +1,6 @@
using Deal.Contracts.Integrations.Models;
namespace Deal.Contracts.Integrations;
namespace Deal.Contracts.Integrations.Abstractions;
/// <summary>
/// Порт-гейт к автономному telegram-service: команды ядра наружу (Ruling 7, план Task 13/14/18).
@@ -4,7 +4,7 @@ namespace Deal.Contracts.Integrations.Models;
/// Дескриптор объекта файлового хранилища: ключ, размер и MIME-тип (Ruling 4, Task 6).
/// </summary>
/// <remarks>
/// Тип-описатель порта <see cref="Deal.Contracts.Integrations.IFileStorage"/>: в нём хранилище отдаёт
/// Тип-описатель порта <see cref="Deal.Contracts.Integrations.Abstractions.IFileStorage"/>: в нём хранилище отдаёт
/// метаданные объекта (аналог stat object_store.py — MinIO StatObject / размер файла на диске) методом
/// <c>StatAsync</c>. Потребитель — download-эндпоинт файлов проектных карточек (Task 9, Ruling T6):
/// Content-Length/Content-Type ответа берутся из дескриптора, а null (объекта нет) мапится в 404
@@ -1,4 +1,6 @@
namespace Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
namespace Deal.Contracts.Integrations.Models;
/// <summary>
/// Общие метки обучения ML-модели (значения 1:1 с ml_client.py). Единый источник для всех модулей,
@@ -4,7 +4,7 @@ namespace Deal.Contracts.Integrations.Models;
/// Тело ответа GET /api/ml/status (ml_routes.py L6675 + ml_client.snapshot() L138150).
/// </summary>
/// <remarks>
/// Собирается реализацией <see cref="Deal.Contracts.Integrations.IMlClient.StatusAsync"/> из статуса
/// Собирается реализацией <see cref="Deal.Contracts.Integrations.Abstractions.IMlClient.StatusAsync"/> из статуса
/// ML-сервиса (<see cref="Service"/>) и локальных настроек/счётчиков тенанта (KV, Ruling 1):
/// <c>enabled</c> — выключатель <c>mlEnabled</c> (семантика «не false», ml_routes.py L71), <c>reachable</c> —
/// доступность сервиса, <c>stats</c> — локальная статистика. Фронт читает: reachable,
@@ -1,4 +1,6 @@
namespace Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
namespace Deal.Contracts.Integrations.Models;
/// <summary>
/// Общие дефолты источника (канал/группа/кандидат), 1:1 с db.py (hue по умолчанию — «#666»).
@@ -1,4 +1,5 @@
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.Configuration;
namespace Deal.Infrastructure.Data;
@@ -1,4 +1,5 @@
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
namespace Deal.Infrastructure.Data;
@@ -11,7 +11,7 @@ namespace Deal.Infrastructure.Integrations.Abstractions;
/// Порт отправки батча обучения в ml-service (RPC TrainBatch, ml.proto L5255) — для MlOutboxFlushScheduler.
/// </summary>
/// <remarks>
/// Отдельный от <see cref="Deal.Contracts.Integrations.IMlClient"/> порт: сигнатура IMlClient не меняется
/// Отдельный от <see cref="Deal.Contracts.Integrations.Abstractions.IMlClient"/> порт: сигнатура IMlClient не меняется
/// (Self-Review плана L530), а выгрузку очереди делает фоновый флашер (Ruling 6), которому нужен только
/// TrainBatch. Реализуется gRPC-адаптером <see cref="GrpcMlClient"/> и регистрируется только при
/// <c>Services:Ml:UseLocal=false</c> (Local-режиму ml-service не нужен — очередь копится, как в этапе 3).
@@ -1,11 +1,12 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Tenants.Application.Abstractions;
using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.Logging;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
@@ -1,11 +1,12 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Tenants.Application.Abstractions;
using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.Logging;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
@@ -1,11 +1,12 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Grpc.Ai;
using Deal.Modules.Pipeline.Application.Abstractions;
using Deal.Modules.Pipeline.Application.Models;
using Deal.Modules.Pipeline.Application.Registrars;
using Deal.Modules.Pipeline.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Grpc.Core;
using Microsoft.Extensions.Logging;
using Deal.Infrastructure.Integrations.Abstractions;
@@ -1,7 +1,8 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Grpc.Ai;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Grpc.Core;
using Microsoft.Extensions.Logging;
using Deal.Infrastructure.Integrations.Abstractions;
@@ -1,5 +1,5 @@
using System.Text.Json;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Grpc.Ml;
using Deal.Modules.Kanban.Application.Abstractions;
@@ -16,7 +16,8 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Grpc.Core;
using Microsoft.Extensions.Logging;
using Deal.Infrastructure.Integrations.Abstractions;
@@ -1,7 +1,8 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Grpc.Telegram;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Grpc.Core;
using Microsoft.Extensions.Logging;
using Deal.Infrastructure.Integrations.Abstractions;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Pipeline.Application.Abstractions;
using Deal.Modules.Pipeline.Application.Models;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
@@ -1,6 +1,6 @@
using System.Globalization;
using System.Text.Json;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Cards.Application.Abstractions;
using Deal.Modules.Cards.Application.Dtos;
@@ -1,5 +1,5 @@
using System.Text.Json;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
@@ -11,7 +11,8 @@ using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Observability;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
@@ -1,4 +1,5 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Infrastructure.Integrations.Storage.Extensions;
using Deal.Infrastructure.Integrations.Storage.Options;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Microsoft.Extensions.Logging;
using Minio;
@@ -1,4 +1,5 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Infrastructure.Integrations.Abstractions;
using Deal.Infrastructure.Integrations.Exceptions;
using Deal.Infrastructure.Integrations.Extensions;
@@ -39,7 +40,8 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
@@ -8,7 +8,8 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.EntityFrameworkCore;
using Npgsql;
@@ -5,7 +5,8 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.Logging;
namespace Deal.Infrastructure.Tenancy;
@@ -1,4 +1,5 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Discovery.Application.Abstractions;
using Deal.Modules.Discovery.Application.Exceptions;
@@ -1,5 +1,5 @@
using System.Text;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Settings.Application.Abstractions;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Discovery.Application.Abstractions;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Discovery.Application.Abstractions;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Discovery.Application.Abstractions;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Discovery.Application.Abstractions;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Discovery.Application.Abstractions;
@@ -1,4 +1,5 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Cards.Application.Abstractions;
using Deal.Modules.Cards.Application.Dtos;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Cards.Application.Abstractions;
using Deal.Modules.Cards.Application.Dtos;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Kanban.Application.ColumnRules;
using Deal.Modules.Kanban.Application.Models;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Cards.Application.Abstractions;
using Deal.Modules.Cards.Application.Dtos;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Cards.Application.Abstractions;
using Deal.Modules.Cards.Application.Dtos;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Cards.Application.Abstractions;
using Deal.Modules.Cards.Application.Dtos;
@@ -1,4 +1,4 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Cards.Application.Abstractions;
using Deal.Modules.Cards.Application.Dtos;
@@ -1,4 +1,5 @@
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Models;
@@ -1,6 +1,6 @@
using System.Globalization;
using System.Text.Json;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
@@ -1,6 +1,6 @@
using System.Globalization;
using System.Text.Json;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
@@ -1,6 +1,6 @@
using System.Globalization;
using System.Text.Json;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
@@ -1,6 +1,6 @@
using System.Globalization;
using System.Text.Json;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
@@ -1,6 +1,6 @@
using System.Globalization;
using System.Text.Json;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
@@ -1,6 +1,6 @@
using System.Globalization;
using System.Text.Json;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;
@@ -1,6 +1,6 @@
using System.Globalization;
using System.Text.Json;
using Deal.Contracts.Integrations;
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Kanban.Application.Abstractions;
using Deal.Modules.Kanban.Application.Extensions;

Some files were not shown because too many files have changed in this diff Show More