Почистить комментарии от упоминаний процесса
Удалены <remarks>, <summary> сжаты до короткой фразы, вырезаны ссылки на Task/Ruling/этап/python/прототип; //-комментарии со ссылками на процесс удалены; то же в .proto. Правила обновлены в docs/spec/Код-стайл-Дейл.md. Строк комментариев 27210 -> ~19100.
This commit is contained in:
@@ -12,40 +12,17 @@ using Deal.Telegram.Telegram;
|
||||
namespace Deal.Telegram;
|
||||
|
||||
/// <summary>
|
||||
/// Собирает WebApplication gRPC-хоста telegram-service (план Task 2/9/10; L227–238 + задачи сессий и
|
||||
/// диалогов/мониторинга).
|
||||
///
|
||||
/// Продакшн-точка входа вызывает <see cref="Create"/> из Program.cs (порт из env GRPC_PORT/PORT);
|
||||
/// интеграционные тесты (Deal.Telegram.Tests) — из своего процесса на эфемерном порту, поэтому
|
||||
/// конфигурация хоста живёт здесь один раз и не дублируется в тестах.
|
||||
/// Транспорт/AddGrpc/health — общая серверная обвязка <see cref="GrpcServer"/> (Deal.Grpc.Hosting,
|
||||
/// C31): mTLS (env DEAL_MTLS_*, Ruling 6/Task 13), Kestrel HTTP/2, интерцепторы service-token и
|
||||
/// access-лога, gRPC-health; здесь — только регистрации логики telegram-service.
|
||||
/// Регистрации задачи сессий: хранение (TgOptions/SessionFileCipher/SessionStore), ферма сессий
|
||||
/// (SessionFarm + ClientFactory), фоновый цикл auto_resume/heartbeat (SessionHeartbeatService);
|
||||
/// обязательный env DEAL_TELEGRAM_SESSION_KEY проверяется при сборке хоста (fail-closed, Ruling 13).
|
||||
/// Регистрации задачи диалогов/мониторинга (Task 10, Ruling 7): DialogCatalog, исходящий канал в ядро
|
||||
/// (ICoreIngressClient/CoreIngressClient — SERVICES__CORE__INGRESS), BackfillService с анти-бан-
|
||||
/// пейсером и фоновые циклы RealtimeSweepService/RealtimeMonitorService.
|
||||
/// Собирает WebApplication gRPC-хоста telegram-service.
|
||||
/// </summary>
|
||||
public static class TelegramServiceHost
|
||||
{
|
||||
/// <summary>
|
||||
/// Создаёт (не запускает) хост: общая обвязка GrpcServer (Kestrel HTTP/2 на 0.0.0.0:grpcPort,
|
||||
/// dev — plaintext + service-token, Ruling 2; при DEAL_MTLS_ENABLED=1 — HTTPS с серверным
|
||||
/// сертификатом и требованием клиентского, Ruling 6/Task 13), затем регистрации сессий и
|
||||
/// диалогов/мониторинга и маппинг <see cref="TelegramServiceImpl"/>.
|
||||
/// Создаёт (не запускает) хост
|
||||
/// </summary>
|
||||
/// <param name="grpcPort">TCP-порт Kestrel.</param>
|
||||
/// <param name="args">Аргументы командной строки (Program.cs); в тестах не нужны.</param>
|
||||
/// <param name="configureServices">
|
||||
/// Опциональный хук DI для тестов (подмена зависимостей фейками, напр. ITelegramClientFactory).
|
||||
/// </param>
|
||||
/// <param name="configureBuilder">
|
||||
/// Опциональный хук конфигурации билдера для production-точки входа (Program.cs): Serilog
|
||||
/// (DealLogging.Configure, Ruling 7/Task 14). Тесты хост поднимают БЕЗ этого хука — логирование
|
||||
/// файлов/консоли тестам не нужно.
|
||||
/// </param>
|
||||
/// <param name="configureServices">Опциональный хук DI для тестов (подмена зависимостей фейками, напр. ITelegramClientFactory).</param>
|
||||
/// <param name="configureBuilder">Опциональный хук конфигурации билдера для production-точки входа (Program.cs): Serilog. Тесты хост поднимают БЕЗ этого хука — логирование файлов/консоли тестам не нужно.</param>
|
||||
/// <returns>Собранный хост; запуск — StartAsync/RunAsync у вызывающего.</returns>
|
||||
public static WebApplication Create(
|
||||
int grpcPort,
|
||||
@@ -57,8 +34,6 @@ public static class TelegramServiceHost
|
||||
|
||||
// Общая серверная обвязка (Deal.Grpc.Hosting, C31): mTLS env DEAL_MTLS_* — загрузка
|
||||
// сертификатов сразу с fail-fast (compose-prod монтирует deploy/certs, scripts/mtls-certs.sh);
|
||||
// Kestrel HTTP/2 (dev — plaintext + обязательный service-token, Ruling 2); AddGrpc
|
||||
// (access-лог первым, затем service-token, потолок сообщения) и gRPC-health (Ruling 12).
|
||||
// Один экземпляр mtlsCertificates используют и Kestrel ниже, и исходящий канал в ядро
|
||||
// (CoreIngressClient).
|
||||
MtlsCertificates? mtlsCertificates = GrpcServer.LoadMtlsCertificates(builder);
|
||||
@@ -66,7 +41,6 @@ public static class TelegramServiceHost
|
||||
builder.Services.AddDealGrpcServer();
|
||||
builder.Services.AddReadyHealthCheck("хост telegram-service готов");
|
||||
|
||||
// Сессии тенантов (задача «сессии и QR-подключение», план Task 9; Ruling 3): хранилище
|
||||
// файлов data/sessions/<tenant>.session (AES-GCM, ключ из env), пул 1 аккаунт/тенант и
|
||||
// фоновый цикл auto_resume/heartbeat (30 с). DEAL_TELEGRAM_SESSION_KEY обязателен —
|
||||
// иначе хост не стартует (сессии не могут храниться в открытом виде).
|
||||
@@ -78,13 +52,6 @@ public static class TelegramServiceHost
|
||||
builder.Services.AddSingleton<SessionFarm>();
|
||||
builder.Services.AddHostedService<SessionHeartbeatService>();
|
||||
|
||||
/// Диалоги и мониторинг (задача «диалоги/backfill/мониторинг», план Task 10; Ruling 7): зеркало
|
||||
/// каталога/мониторинга (DialogCatalog), исходящий канал в ядро (CoreIngressClient — адрес
|
||||
/// SERVICES__CORE__INGRESS, Ruling 12), backfill с анти-бан-паузами и фоновые циклы:
|
||||
/// догон непрочитанных (RealtimeSweepService, 30 с) и reconcile realtime-listener'ов
|
||||
/// (RealtimeMonitorService). Discovery-операции (план Task 11): DiscoveryOps поверх SessionFarm
|
||||
/// и общего анти-бан-пейсера (поиск 2–4 с, Ruling 3). configureServices (тесты) может подменить
|
||||
/// ICoreIngressClient/пейсер.
|
||||
CoreIngressOptions ingressOptions = CoreIngressOptions.FromConfiguration(builder.Configuration);
|
||||
builder.Services.AddSingleton(ingressOptions);
|
||||
builder.Services.AddSingleton<ICoreIngressClient>(provider => new CoreIngressClient(
|
||||
|
||||
Reference in New Issue
Block a user