Разложить grpc-hosting и UrlSafeToken по назначению

grpc-hosting -> Interceptors/Models/Options/Services; UrlSafeToken
-> SharedKernel/Utilities. Маркеры проектов оставлены в корнях.
namespace/using/FQN мигрированы.
This commit is contained in:
Rustam Khalimov
2026-09-11 13:33:19 +03:00
parent 1e118e9bba
commit 5f5538d33b
25 changed files with 84 additions and 20 deletions
@@ -1,7 +1,10 @@
using System.Net;
using System.Net.Sockets;
using Deal.Ai.Llm;
using Deal.Grpc.Hosting;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
using Deal.Grpc.Hosting.Services;
using Grpc.Core;
using Grpc.Net.Client;
using Microsoft.AspNetCore.Builder;
+4 -1
View File
@@ -1,4 +1,7 @@
using Deal.Grpc.Hosting;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
using Deal.Grpc.Hosting.Services;
namespace Deal.Ai;
+4 -1
View File
@@ -12,7 +12,10 @@
// задачи 7–8): фасад живёт в Deal.Ai/Llm.
using Deal.Ai;
using Deal.Grpc.Hosting;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
using Deal.Grpc.Hosting.Services;
// Порт по умолчанию — 5102 (Ruling 12, compose.dev.yml); переопределяется env GRPC_PORT (контейнер)
// или PORT (общий конвенциональный env хостинг-платформ) — см. GrpcHostEnvironment.ResolveGrpcPort.
@@ -10,7 +10,7 @@ namespace Deal.Api.Observability;
/// </summary>
/// <remarks>
/// <para>
/// Зеркалит общий хелпер сервисов (<c>Deal.Grpc.Hosting.DealMetricsHosting</c>) — ядро не ссылается на
/// Зеркалит общий хелпер сервисов (<c>Deal.Grpc.Hosting.Services.DealMetricsHosting</c>) — ядро не ссылается на
/// обвязку gRPC-сервисов, поэтому держит свою копию по конвенции проекта (см. комментарий в
/// Deal.Grpc.Hosting.csproj). Отдельный HTTP/1.1-эндпоинт нужен, т.к. основной HTTP :5080 уже
/// обслуживает приложение, а gRPC-ингресс :5082 слушает только HTTP/2.
@@ -1,4 +1,5 @@
using Deal.SharedKernel;
using Deal.SharedKernel.Utilities;
namespace Deal.Modules.Tenants.Application.Services;
@@ -1,6 +1,7 @@
using System.Security.Cryptography;
using System.Text;
using Deal.SharedKernel;
using Deal.SharedKernel.Utilities;
namespace Deal.Modules.Tenants.Application.Services;
@@ -1,6 +1,7 @@
using Deal.Modules.Tenants.Application.Abstractions;
using Deal.Modules.Tenants.Application.Models;
using Deal.SharedKernel;
using Deal.SharedKernel.Utilities;
namespace Deal.Modules.Tenants.Application.Services;
@@ -1,3 +1,5 @@
using Deal.SharedKernel.Utilities;
namespace Deal.SharedKernel;
/// <summary>
@@ -1,3 +1,5 @@
using Deal.SharedKernel.Utilities;
namespace Deal.SharedKernel.Tenants.Models;
/// <summary>
@@ -1,6 +1,8 @@
using System.Security.Cryptography;
using Deal.SharedKernel;
using Deal.SharedKernel.Utilities;
namespace Deal.SharedKernel;
namespace Deal.SharedKernel.Utilities;
/// <summary>
/// Криптостойкие url-safe токены (Base64Url без padding) для одноразовых секретов: raw-токены сессий,
@@ -2,8 +2,11 @@ using System.Diagnostics;
using Grpc.Core;
using Grpc.Core.Interceptors;
using Microsoft.Extensions.Logging;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
using Deal.Grpc.Hosting.Services;
namespace Deal.Grpc.Hosting;
namespace Deal.Grpc.Hosting.Interceptors;
/// <summary>
/// Access-лог RPC Deal-сервисов (Ruling 7, план Task 14; общий шаблон трёх сервисов — C31): каждый
@@ -3,8 +3,11 @@ using System.Text;
using Grpc.Core;
using Grpc.Core.Interceptors;
using Microsoft.Extensions.Configuration;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
using Deal.Grpc.Hosting.Services;
namespace Deal.Grpc.Hosting;
namespace Deal.Grpc.Hosting.Interceptors;
/// <summary>
/// Серверный интерцептор service-token (Ruling 1; общий шаблон трёх Deal-сервисов — C31).
@@ -1,8 +1,11 @@
using System.Net.Security;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Options;
using Deal.Grpc.Hosting.Services;
namespace Deal.Grpc.Hosting;
namespace Deal.Grpc.Hosting.Models;
/// <summary>
/// Загруженный набор сертификатов mTLS внутреннего gRPC (Ruling 6, план Task 13; общий шаблон — C31).
@@ -1,6 +1,9 @@
using Microsoft.Extensions.Configuration;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Services;
namespace Deal.Grpc.Hosting;
namespace Deal.Grpc.Hosting.Options;
/// <summary>
/// Конфигурация mTLS-транспорта внутреннего gRPC (Ruling 6, план Task 13; общий шаблон — C31).
@@ -4,8 +4,11 @@ using Microsoft.Extensions.Hosting;
using Serilog;
using Serilog.Events;
using Serilog.Formatting.Compact;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
namespace Deal.Grpc.Hosting;
namespace Deal.Grpc.Hosting.Services;
/// <summary>
/// Serilog-конфигурация процесса Deal-сервиса (Ruling 7/9, план Task 14; общий шаблон — C31).
@@ -3,8 +3,11 @@ using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Server.Kestrel.Core;
using Microsoft.Extensions.DependencyInjection;
using OpenTelemetry.Metrics;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
namespace Deal.Grpc.Hosting;
namespace Deal.Grpc.Hosting.Services;
/// <summary>
/// Общая настройка метрик Deal-сервисов (этап 12, пакет A): OpenTelemetry → экспортёр Prometheus,
@@ -1,4 +1,8 @@
namespace Deal.Grpc.Hosting;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
namespace Deal.Grpc.Hosting.Services;
/// <summary>
/// Общие стартовые проверки/разбор env для Program.cs Deal-сервисов (C31): порт Kestrel
@@ -5,8 +5,11 @@ using Microsoft.AspNetCore.Server.Kestrel.Core;
using Microsoft.AspNetCore.Server.Kestrel.Https;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Diagnostics.HealthChecks;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
namespace Deal.Grpc.Hosting;
namespace Deal.Grpc.Hosting.Services;
/// <summary>
/// Общие серверные блоки gRPC-хостов Deal-сервисов (C31): mTLS-набор, Kestrel HTTP/2-эндпоинт,
@@ -1,6 +1,9 @@
using System.Net;
using System.Net.Sockets;
using Deal.Grpc.Hosting;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
using Deal.Grpc.Hosting.Services;
using Deal.Ml.Model;
using Grpc.Core;
using Grpc.Net.Client;
+4 -1
View File
@@ -1,4 +1,7 @@
using Deal.Grpc.Hosting;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
using Deal.Grpc.Hosting.Services;
using Deal.Ml.Model;
namespace Deal.Ml;
+4 -1
View File
@@ -11,7 +11,10 @@
// наивный Байес по терминам per-tenant (файлы data/ml/<tenantId>.sqlite, Ruling 4) — движок/пул
// в Model/, хранилище в Storage/, gRPC Predict/Status/Reset/TrainBatch — MlServiceImpl.
using Deal.Grpc.Hosting;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
using Deal.Grpc.Hosting.Services;
using Deal.Ml;
// Порт по умолчанию — 5103 (Ruling 12, compose.dev.yml); переопределяется env GRPC_PORT (контейнер)
@@ -1,6 +1,9 @@
using System.Net;
using System.Net.Sockets;
using Deal.Grpc.Hosting;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
using Deal.Grpc.Hosting.Services;
using Deal.Telegram.Core;
using Deal.Telegram.Sessions;
using Grpc.Core;
@@ -1,4 +1,7 @@
using Deal.Grpc.Hosting;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
using Deal.Grpc.Hosting.Services;
using Deal.Grpc.Telegram;
using Deal.Telegram.Sessions;
using Grpc.Core;
@@ -11,7 +11,10 @@
// каталога/мониторинга (Task 10) и discovery-операции Search/GetInfo/ReadForEval/Join/Leave
// (Task 11, см. TelegramServiceImpl/DiscoveryOps).
using Deal.Grpc.Hosting;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
using Deal.Grpc.Hosting.Services;
using Deal.Telegram;
// Порт по умолчанию — 5101 (Ruling 12, compose.dev.yml); переопределяется env GRPC_PORT (контейнер)
@@ -1,4 +1,7 @@
using Deal.Grpc.Hosting;
using Deal.Grpc.Hosting.Interceptors;
using Deal.Grpc.Hosting.Models;
using Deal.Grpc.Hosting.Options;
using Deal.Grpc.Hosting.Services;
using Deal.Telegram.Core;
using Deal.Telegram.Dialogs;
using Deal.Telegram.Discovery;