From fd64c114414de98c72ea793d444e9952d6cc1ad6 Mon Sep 17 00:00:00 2001 From: Rustam Khalimov Date: Fri, 11 Sep 2026 19:17:00 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D1=82=D1=8C=20=D0=BE?= =?UTF-8?q?=D1=87=D0=B5=D0=B2=D0=B8=D0=B4=D0=BD=D1=8B=D0=B5=20=20?= =?UTF-8?q?=D1=82=D0=BE=D0=BA=D0=B5=D0=BD=D0=BE=D0=B2=20=D0=BE=D1=82=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=B8=20=D1=83=D0=B6=D0=B0=D1=82=D1=8C=20?= =?UTF-8?q?3=20summary?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 73 («Токен отмены.») — пересказ сигнатуры, запрещённый §5, удалены в 17 файлах; ужаты 2 многосентенционных и 1 длинное summary. Контроль краткости: 0, inline- 0, многосентенционных 0, TODO 0. Build 5 sln 0/0, тесты зелёные (1340/130/52/38/9). --- docs/spec/Код-стайл-аудит-2026-09-11.md | 5 ++++- docs/superpowers/STATUS.md | 4 +++- .../Tenancy/TenantSchemaMigrationService.cs | 3 +-- .../Sources/ISourceContentProvider.cs | 1 - .../Sources/ISourceIngestObserver.cs | 1 - .../Sources/SourceContentResolver.cs | 1 - .../Services/CardsService.Source.cs | 1 - .../Application/Services/CardReclassifier.cs | 1 - .../Services/PipelineWorkerService.DryRun.cs | 1 - .../Deal.Telegram/Core/ICoreIngressClient.cs | 2 -- .../Deal.Telegram/Dialogs/BackfillService.cs | 1 - .../Deal.Telegram/Dialogs/IBackfillPacer.cs | 1 - .../Deal.Telegram/Dialogs/RealtimeSweep.cs | 1 - .../Deal.Telegram/Discovery/DiscoveryOps.cs | 5 ----- .../Hosting/RealtimeMonitorService.cs | 1 - .../Hosting/SessionHeartbeatService.cs | 1 - .../Deal.Telegram/Sessions/SessionFarm.cs | 18 ----------------- .../Deal.Telegram/Sessions/SessionStore.cs | 3 --- .../Deal.Telegram/Sessions/TenantSession.cs | 20 +------------------ .../Deal.Telegram/Telegram/ISessionClient.cs | 18 +---------------- 20 files changed, 10 insertions(+), 79 deletions(-) diff --git a/docs/spec/Код-стайл-аудит-2026-09-11.md b/docs/spec/Код-стайл-аудит-2026-09-11.md index bafa8e3..e793247 100644 --- a/docs/spec/Код-стайл-аудит-2026-09-11.md +++ b/docs/spec/Код-стайл-аудит-2026-09-11.md @@ -54,4 +54,7 @@ - Переведены на русский англоязычные `//`-комментарии (3 шт. из 18 найденных; остальные — имена сущностей/заголовки секций тестов, не англоязычный текст). - Из индекса убраны случайно закоммиченные `archive/**/__pycache__/*.pyc` (2 шт., уже в `.gitignore`). -- STATUS.md: удалён устаревший блок «Осталось (в backlog)» в шапке (пункты закрытыgeneric-контрактом источника). +- STATUS.md: удалён устаревший блок «Осталось (в backlog)» в шапке (пункты закрыты generic-контрактом источника). +- Дочистка по контрольному скану краткости: удалены 73 очевидных `` + («Токен отмены.» — пересказ сигнатуры, §5) в 17 файлах; ужаты 3 summary (2 многосентенционных, 1 длинное). + Контроль: `` — 0, inline-`` — 0, многосентенционных summary — 0, TODO — 0. diff --git a/docs/superpowers/STATUS.md b/docs/superpowers/STATUS.md index 36e3910..ce2355e 100644 --- a/docs/superpowers/STATUS.md +++ b/docs/superpowers/STATUS.md @@ -25,7 +25,9 @@ > (`* text=auto eol=lf`), `.editorconfig` → lf, нормализовано 1029 файлов; попутно починены 42 CRLF-.sh > (первый прогон удалённого CI падал бы). Понижено 12 новых private XML-доков; добавлены 4 `` > членам интерфейсов; переведены 3 англоязычных комментария; из индекса убраны 2 `__pycache__/*.pyc`; -> STATUS.md — удалён устаревший блок «Осталось (в backlog)» в шапке. Явные реализации интерфейсов (§11) — +> STATUS.md — удалён устаревший блок «Осталось (в backlog)» в шапке. Дочистка по контрольному скану +> краткости: удалены 73 очевидных `` (пересказ сигнатуры) в 17 файлах, ужаты 3 summary +> (многосентенционные/длинные); контроль: `` 0, inline-`` 0, многосентенционных 0, TODO 0. Явные реализации интерфейсов (§11) — > остались точечным ревью владельца (43 интерфейса с реализациями, массовая правка не автоматизируется). > Сборка 5 sln 0/0; тесты: core **1340/1340**, telegram **130/130**, ai **52/52**, ml **38/38**, storage **9/9** — зелёные. > Детали — `docs/spec/Код-стайл-аудит-2026-09-11.md`, §2. diff --git a/src/core/Deal.Infrastructure/Tenancy/TenantSchemaMigrationService.cs b/src/core/Deal.Infrastructure/Tenancy/TenantSchemaMigrationService.cs index 581f726..013db9b 100644 --- a/src/core/Deal.Infrastructure/Tenancy/TenantSchemaMigrationService.cs +++ b/src/core/Deal.Infrastructure/Tenancy/TenantSchemaMigrationService.cs @@ -8,8 +8,7 @@ using Microsoft.Extensions.Logging; namespace Deal.Infrastructure.Tenancy; /// -/// Пакетная (maintenance) миграция схем ВСЕХ существующих тенантов реестра: шардированный обход -/// страницами с ограниченным параллелизмом и логированием прогресса — для провижининга на сотни/тысячи схем. +/// Пакетная миграция схем всех существующих тенантов реестра для провижининга на сотни/тысячи схем. /// public sealed class TenantSchemaMigrationService( ITenantRepository tenantRepository, diff --git a/src/core/Deal.Modules.Cards/Application/Sources/ISourceContentProvider.cs b/src/core/Deal.Modules.Cards/Application/Sources/ISourceContentProvider.cs index 34cf13d..357449b 100644 --- a/src/core/Deal.Modules.Cards/Application/Sources/ISourceContentProvider.cs +++ b/src/core/Deal.Modules.Cards/Application/Sources/ISourceContentProvider.cs @@ -14,7 +14,6 @@ public interface ISourceContentProvider /// Загружает содержимое записи источника. /// /// Ссылка на источник. - /// Токен отмены. /// Содержимое записи либо null, если источник не отдал данные. public Task LoadAsync(SourceRef source, CancellationToken ct); } diff --git a/src/core/Deal.Modules.Cards/Application/Sources/ISourceIngestObserver.cs b/src/core/Deal.Modules.Cards/Application/Sources/ISourceIngestObserver.cs index ca98a8b..d245810 100644 --- a/src/core/Deal.Modules.Cards/Application/Sources/ISourceIngestObserver.cs +++ b/src/core/Deal.Modules.Cards/Application/Sources/ISourceIngestObserver.cs @@ -9,7 +9,6 @@ public interface ISourceIngestObserver /// Обрабатывает принятую запись источника. /// /// Принятая запись. - /// Токен отмены. /// Завершается после обработки; сбой наблюдателя не влияет на приём. public Task OnIngestedAsync(SourceItem item, CancellationToken ct); } diff --git a/src/core/Deal.Modules.Cards/Application/Sources/SourceContentResolver.cs b/src/core/Deal.Modules.Cards/Application/Sources/SourceContentResolver.cs index 86f458d..7072255 100644 --- a/src/core/Deal.Modules.Cards/Application/Sources/SourceContentResolver.cs +++ b/src/core/Deal.Modules.Cards/Application/Sources/SourceContentResolver.cs @@ -31,7 +31,6 @@ public sealed class SourceContentResolver /// Загружает содержимое записи источника. /// /// Ссылка на источник. - /// Токен отмены. /// Содержимое записи либо null — провайдера нет/источник не отдал данные. public Task ResolveAsync(SourceRef source, CancellationToken ct) { diff --git a/src/core/Deal.Modules.Kanban/Application/Services/CardsService.Source.cs b/src/core/Deal.Modules.Kanban/Application/Services/CardsService.Source.cs index 8009839..02f615c 100644 --- a/src/core/Deal.Modules.Kanban/Application/Services/CardsService.Source.cs +++ b/src/core/Deal.Modules.Kanban/Application/Services/CardsService.Source.cs @@ -12,7 +12,6 @@ public sealed partial class CardsService /// Загружает содержимое источника карточки. /// /// Карточка, для которой нужно содержимое. - /// Токен отмены. /// Содержимое от провайдера источника либо сохранённое в карточке. public async Task ResolveSourceAsync(CardDto card, CancellationToken ct) { diff --git a/src/core/Deal.Modules.Pipeline/Application/Services/CardReclassifier.cs b/src/core/Deal.Modules.Pipeline/Application/Services/CardReclassifier.cs index 0c245c4..065feac 100644 --- a/src/core/Deal.Modules.Pipeline/Application/Services/CardReclassifier.cs +++ b/src/core/Deal.Modules.Pipeline/Application/Services/CardReclassifier.cs @@ -51,7 +51,6 @@ public sealed class CardReclassifier( /// Пакетная переклассификация «Неразобранного» /// /// Опциональный список id (null/пусто — все карточки inbox). - /// Токен отмены. /// Наблюдатель прогресса (SSE); null — без отчётов. /// Итог прохода (счётчики исхода) либо busy, если проход уже идёт. public async Task ReclassifyInboxAsync( diff --git a/src/core/Deal.Modules.Pipeline/Application/Services/PipelineWorkerService.DryRun.cs b/src/core/Deal.Modules.Pipeline/Application/Services/PipelineWorkerService.DryRun.cs index 1bd7bb0..bb65e9a 100644 --- a/src/core/Deal.Modules.Pipeline/Application/Services/PipelineWorkerService.DryRun.cs +++ b/src/core/Deal.Modules.Pipeline/Application/Services/PipelineWorkerService.DryRun.cs @@ -31,7 +31,6 @@ public sealed partial class PipelineWorkerService /// Прогоняет текст по этапам конвейера без записи в систему. /// /// Текст для проверки. - /// Токен отмены. /// Результаты этапов, разбор и целевой контейнер (если карточка была бы создана). public async Task DryRunAsync(string text, CancellationToken ct) { diff --git a/src/telegram-service/Deal.Telegram/Core/ICoreIngressClient.cs b/src/telegram-service/Deal.Telegram/Core/ICoreIngressClient.cs index 22d56ad..caf1210 100644 --- a/src/telegram-service/Deal.Telegram/Core/ICoreIngressClient.cs +++ b/src/telegram-service/Deal.Telegram/Core/ICoreIngressClient.cs @@ -13,7 +13,6 @@ public interface ICoreIngressClient /// /// Id тенанта. /// Запись в контракте PushSourceRequest. - /// Отмена вызова. /// Ответ ядра (accepted/duplicate — дубль источника в очереди не растёт). public Task PushSourceAsync( string tenantId, @@ -25,7 +24,6 @@ public interface ICoreIngressClient /// /// Id тенанта. /// Актуальный каталог диалогов (как refresh_dialogs). - /// Отмена вызова. /// Список id диалогов с включённым мониторингом (по версии ядра). public Task> SyncDialogsAsync( string tenantId, diff --git a/src/telegram-service/Deal.Telegram/Dialogs/BackfillService.cs b/src/telegram-service/Deal.Telegram/Dialogs/BackfillService.cs index 2db273a..225930f 100644 --- a/src/telegram-service/Deal.Telegram/Dialogs/BackfillService.cs +++ b/src/telegram-service/Deal.Telegram/Dialogs/BackfillService.cs @@ -75,7 +75,6 @@ public sealed class BackfillService /// Id тенанта. /// Подписанный id диалога. /// True — «Перечитать» по кнопке (семантика флага — в ядре, см. класс). - /// Отмена операции. /// Сколько сообщений отправлено в ядро (0 — диалог уже перечитывается/нет текстов). public async Task ExecuteAsync( string tenantId, diff --git a/src/telegram-service/Deal.Telegram/Dialogs/IBackfillPacer.cs b/src/telegram-service/Deal.Telegram/Dialogs/IBackfillPacer.cs index f6a3f1e..36d8120 100644 --- a/src/telegram-service/Deal.Telegram/Dialogs/IBackfillPacer.cs +++ b/src/telegram-service/Deal.Telegram/Dialogs/IBackfillPacer.cs @@ -10,7 +10,6 @@ public interface IBackfillPacer /// /// Нижняя граница паузы, секунды (≥ 0). /// Верхняя граница паузы, секунды (≥ minSeconds). - /// Отмена ожидания. /// Задача ожидания. public Task WaitAsync( double minSeconds, diff --git a/src/telegram-service/Deal.Telegram/Dialogs/RealtimeSweep.cs b/src/telegram-service/Deal.Telegram/Dialogs/RealtimeSweep.cs index 7e30e98..8c3e773 100644 --- a/src/telegram-service/Deal.Telegram/Dialogs/RealtimeSweep.cs +++ b/src/telegram-service/Deal.Telegram/Dialogs/RealtimeSweep.cs @@ -58,7 +58,6 @@ public sealed class RealtimeSweep /// /// Один цикл догона /// - /// Отмена цикла. public async Task SweepAllAsync(CancellationToken cancellationToken) { foreach (TenantSession session in _sessionFarm.Sessions) diff --git a/src/telegram-service/Deal.Telegram/Discovery/DiscoveryOps.cs b/src/telegram-service/Deal.Telegram/Discovery/DiscoveryOps.cs index 6ffdeac..7b9d8ab 100644 --- a/src/telegram-service/Deal.Telegram/Discovery/DiscoveryOps.cs +++ b/src/telegram-service/Deal.Telegram/Discovery/DiscoveryOps.cs @@ -56,7 +56,6 @@ public sealed class DiscoveryOps /// Id тенанта. /// Поисковый запрос (ключ задачи discovery). /// Верхняя граница результата. - /// Отмена операции. /// Найденные источники (каналы/группы/личные) без дублей, не длиннее limit. public async Task> SearchAsync( string tenantId, @@ -78,7 +77,6 @@ public sealed class DiscoveryOps /// /// Id тенанта. /// Подписанный id источника («-100…»/«-…»/«+…»). - /// Отмена операции. /// Инфо об источнике (сбои определения не бросаются — см. ISessionClient.GetInfoAsync). public Task GetInfoAsync( string tenantId, @@ -92,7 +90,6 @@ public sealed class DiscoveryOps /// Id тенанта. /// Подписанный id источника. /// Размер выборки (≤ 0 — дефолт; форумы читаются по активным темам). - /// Отмена операции. /// ok/сообщения либо ok=false/error="no_history" (не ошибка RPC). public Task ReadForEvalAsync( string tenantId, @@ -106,7 +103,6 @@ public sealed class DiscoveryOps /// /// Id тенанта. /// Username источника («@»/пробелы нормализуются). - /// Отмена операции. public async Task JoinAsync( string tenantId, string username, @@ -127,7 +123,6 @@ public sealed class DiscoveryOps /// /// Id тенанта. /// Подписанный id диалога. - /// Отмена операции. public Task LeaveAsync( string tenantId, string dialogId, diff --git a/src/telegram-service/Deal.Telegram/Hosting/RealtimeMonitorService.cs b/src/telegram-service/Deal.Telegram/Hosting/RealtimeMonitorService.cs index 82349f8..656a898 100644 --- a/src/telegram-service/Deal.Telegram/Hosting/RealtimeMonitorService.cs +++ b/src/telegram-service/Deal.Telegram/Hosting/RealtimeMonitorService.cs @@ -69,7 +69,6 @@ public sealed class RealtimeMonitorService : BackgroundService /// /// При остановке хоста отписывает все listener'ы. /// - /// Токен остановки. public override async Task StopAsync(CancellationToken cancellationToken) { await base.StopAsync(cancellationToken).ConfigureAwait(false); diff --git a/src/telegram-service/Deal.Telegram/Hosting/SessionHeartbeatService.cs b/src/telegram-service/Deal.Telegram/Hosting/SessionHeartbeatService.cs index 55eebba..7f4b264 100644 --- a/src/telegram-service/Deal.Telegram/Hosting/SessionHeartbeatService.cs +++ b/src/telegram-service/Deal.Telegram/Hosting/SessionHeartbeatService.cs @@ -62,7 +62,6 @@ public sealed class SessionHeartbeatService : BackgroundService /// /// При остановке хоста сохраняет живые сессии. /// - /// Токен остановки. public override async Task StopAsync(CancellationToken cancellationToken) { await base.StopAsync(cancellationToken).ConfigureAwait(false); diff --git a/src/telegram-service/Deal.Telegram/Sessions/SessionFarm.cs b/src/telegram-service/Deal.Telegram/Sessions/SessionFarm.cs index 2fbd2a1..4c1eb0b 100644 --- a/src/telegram-service/Deal.Telegram/Sessions/SessionFarm.cs +++ b/src/telegram-service/Deal.Telegram/Sessions/SessionFarm.cs @@ -52,7 +52,6 @@ public sealed class SessionFarm /// /// Id тенанта. /// Верхняя граница числа диалогов. - /// Отмена операции. public Task> ListDialogsAsync( string tenantId, int limit, @@ -65,7 +64,6 @@ public sealed class SessionFarm /// Id тенанта. /// Подписанный id диалога. /// Сколько последних сообщений запросить. - /// Отмена операции. public Task> GetMessagesAsync( string tenantId, string dialogId, @@ -79,7 +77,6 @@ public sealed class SessionFarm /// Id тенанта. /// Подписанный id диалога. /// Id сообщения в Telegram. - /// Отмена операции. public Task GetMessageAsync( string tenantId, string dialogId, @@ -92,7 +89,6 @@ public sealed class SessionFarm /// /// Id тенанта. /// Подписанный id диалога. - /// Отмена операции. public Task MarkReadAsync( string tenantId, string dialogId, @@ -105,7 +101,6 @@ public sealed class SessionFarm /// Id тенанта. /// Поисковый запрос (ключ задачи discovery). /// Верхняя граница результата. - /// Отмена операции. public Task> SearchAsync( string tenantId, string query, @@ -118,7 +113,6 @@ public sealed class SessionFarm /// /// Id тенанта. /// Подписанный id источника. - /// Отмена операции. public Task GetInfoAsync( string tenantId, string dialogId, @@ -131,7 +125,6 @@ public sealed class SessionFarm /// Id тенанта. /// Подписанный id источника. /// Размер выборки. - /// Отмена операции. public Task ReadForEvalAsync( string tenantId, string dialogId, @@ -144,7 +137,6 @@ public sealed class SessionFarm /// /// Id тенанта. /// Username (без «@»; нормализует DiscoveryOps). - /// Отмена операции. public Task JoinAsync( string tenantId, string username, @@ -156,7 +148,6 @@ public sealed class SessionFarm /// /// Id тенанта. /// Подписанный id диалога. - /// Отмена операции. public Task LeaveAsync( string tenantId, string dialogId, @@ -170,7 +161,6 @@ public sealed class SessionFarm /// api_id приложения. /// api_hash приложения. /// Номер телефона. - /// Отмена операции. public Task StartPhoneAsync( string tenantId, int apiId, @@ -185,7 +175,6 @@ public sealed class SessionFarm /// Id тенанта. /// api_id приложения. /// api_hash приложения. - /// Отмена операции. public Task StartQrAsync( string tenantId, int apiId, @@ -198,7 +187,6 @@ public sealed class SessionFarm /// /// Id тенанта. /// Код. - /// Отмена операции. public Task SendCodeAsync( string tenantId, string code, @@ -210,7 +198,6 @@ public sealed class SessionFarm /// /// Id тенанта. /// Пароль. - /// Отмена операции. public Task SendPasswordAsync( string tenantId, string password, @@ -221,7 +208,6 @@ public sealed class SessionFarm /// Отключение аккаунта /// /// Id тенанта. - /// Отмена операции. public Task LogoutAsync(string tenantId, CancellationToken cancellationToken) { TenantSession? session = FindSession(tenantId); @@ -238,7 +224,6 @@ public sealed class SessionFarm /// Статус сессии тенанта; null — аккаунт не подключён /// /// Id тенанта. - /// Отмена операции. public Task GetStatusAsync(string tenantId, CancellationToken cancellationToken) { TenantSession? session = FindSession(tenantId); @@ -248,7 +233,6 @@ public sealed class SessionFarm /// /// Авто-возобновление на старте /// - /// Отмена операции. public async Task ResumeAllAsync(CancellationToken cancellationToken) { foreach (string tenantId in _sessionStore.ListTenantIds()) @@ -282,7 +266,6 @@ public sealed class SessionFarm /// /// Сердцебиение /// - /// Отмена операции. public async Task HeartbeatTickAsync(CancellationToken cancellationToken) { foreach (TenantSession session in _sessions.Values) @@ -299,7 +282,6 @@ public sealed class SessionFarm /// /// Остановка хоста /// - /// Отмена операции. public async Task ShutdownAsync(CancellationToken cancellationToken) { foreach (TenantSession session in _sessions.Values) diff --git a/src/telegram-service/Deal.Telegram/Sessions/SessionStore.cs b/src/telegram-service/Deal.Telegram/Sessions/SessionStore.cs index 1a8af66..5741563 100644 --- a/src/telegram-service/Deal.Telegram/Sessions/SessionStore.cs +++ b/src/telegram-service/Deal.Telegram/Sessions/SessionStore.cs @@ -39,7 +39,6 @@ public sealed class SessionStore /// Читает и расшифровывает сессию тенанта. /// /// Id тенанта. - /// Отмена операции. public async Task LoadAsync(string tenantId, CancellationToken cancellationToken = default) { string filePath = PathFor(tenantId); @@ -95,7 +94,6 @@ public sealed class SessionStore /// /// Id тенанта. /// Открытое содержимое сессии для шифрования at-rest. - /// Отмена операции. public async Task SaveAsync( string tenantId, StoredSession session, @@ -124,7 +122,6 @@ public sealed class SessionStore /// Удаляет файл сессии тенанта /// /// Id тенанта. - /// Отмена операции. public Task DeleteAsync(string tenantId, CancellationToken cancellationToken = default) { string filePath = PathFor(tenantId); diff --git a/src/telegram-service/Deal.Telegram/Sessions/TenantSession.cs b/src/telegram-service/Deal.Telegram/Sessions/TenantSession.cs index 3341a38..3fabfeb 100644 --- a/src/telegram-service/Deal.Telegram/Sessions/TenantSession.cs +++ b/src/telegram-service/Deal.Telegram/Sessions/TenantSession.cs @@ -78,7 +78,6 @@ public sealed class TenantSession : IAsyncDisposable /// api_id приложения (из тела запроса ядра). /// api_hash приложения. /// Номер телефона (международный формат). - /// Отмена операции. /// Снимок состояния после операции (фаза "code"). /// Нет ключей (INVALID_ARGUMENT) / ошибки Telegram. public async Task StartPhoneAsync( @@ -139,7 +138,6 @@ public sealed class TenantSession : IAsyncDisposable /// /// api_id приложения. /// api_hash приложения. - /// Отмена операции. /// Снимок состояния: Qr с qrUrl или Ready (авторизация уже была). /// Нет ключей (INVALID_ARGUMENT) / ошибки Telegram до первого URL. public async Task StartQrAsync( @@ -218,10 +216,9 @@ public sealed class TenantSession : IAsyncDisposable } /// - /// Отправить SMS-код. Фазы вне "code" — FAILED_PRECONDITION. + /// Отправить SMS-код. /// /// Код из SMS/Telegram-сообщения. - /// Отмена операции. /// Снимок состояния: "password" при 2FA либо "ready" после авторизации. public async Task SendCodeAsync(string code, CancellationToken cancellationToken) { @@ -266,7 +263,6 @@ public sealed class TenantSession : IAsyncDisposable /// Отправить облачный пароль 2FA. /// /// Облачный пароль. - /// Отмена операции. /// Снимок состояния после операции (фаза "ready"). public async Task SendPasswordAsync(string password, CancellationToken cancellationToken) { @@ -303,7 +299,6 @@ public sealed class TenantSession : IAsyncDisposable /// /// Отключить аккаунт и удалить сессию тенанта. /// - /// Отмена операции. public async Task LogoutAsync(CancellationToken cancellationToken) { await _gate.WaitAsync(cancellationToken).ConfigureAwait(false); @@ -357,7 +352,6 @@ public sealed class TenantSession : IAsyncDisposable /// /// Снимок состояния для GetStatus; null — сессии тенанта нет /// - /// Отмена операции. public async Task GetSnapshotAsync(CancellationToken cancellationToken) { await _gate.WaitAsync(cancellationToken).ConfigureAwait(false); @@ -376,7 +370,6 @@ public sealed class TenantSession : IAsyncDisposable /// Список диалогов аккаунта; фаза обязана быть ready. /// /// Верхняя граница числа диалогов. - /// Отмена операции. /// Диалоги аккаунта (нейтральный вид). public async Task> ListDialogsAsync(int limit, CancellationToken cancellationToken) { @@ -397,7 +390,6 @@ public sealed class TenantSession : IAsyncDisposable /// /// Подписанный id диалога. /// Сколько последних сообщений запросить. - /// Отмена операции. /// Сообщения диалога (от новых к старым, непустые тексты). public async Task> GetMessagesAsync( string dialogId, @@ -421,7 +413,6 @@ public sealed class TenantSession : IAsyncDisposable /// /// Подписанный id диалога. /// Id сообщения в Telegram. - /// Отмена операции. /// Сообщение с текстом либо null (медиа без текста/не найдено). public async Task GetMessageAsync( string dialogId, @@ -444,7 +435,6 @@ public sealed class TenantSession : IAsyncDisposable /// Помечает диалог прочитанным /// /// Подписанный id диалога. - /// Отмена операции. public async Task MarkReadAsync(string dialogId, CancellationToken cancellationToken) { await _gate.WaitAsync(cancellationToken).ConfigureAwait(false); @@ -465,7 +455,6 @@ public sealed class TenantSession : IAsyncDisposable /// /// Поисковый запрос (ключ задачи discovery). /// Верхняя граница результата. - /// Отмена операции. /// Найденные источники. public async Task> SearchAsync( string query, @@ -488,7 +477,6 @@ public sealed class TenantSession : IAsyncDisposable /// Инфо об источнике для оценки кандидата; фаза ready. /// /// Подписанный id источника. - /// Отмена операции. /// Инфо (по умолчанию — только id; сбои определения не бросаются, см. ISessionClient). public async Task GetInfoAsync(string dialogId, CancellationToken cancellationToken) { @@ -509,7 +497,6 @@ public sealed class TenantSession : IAsyncDisposable /// /// Подписанный id источника. /// Размер выборки (limit ≤ 0 — пусто без сети). - /// Отмена операции. /// Результат чтения (ok/messages либо no_history). public async Task ReadForEvalAsync( string dialogId, @@ -532,7 +519,6 @@ public sealed class TenantSession : IAsyncDisposable /// Вступить в канал/группу по username; фаза ready. /// /// Username (без «@»; нормализует DiscoveryOps). - /// Отмена операции. public async Task JoinAsync(string username, CancellationToken cancellationToken) { await _gate.WaitAsync(cancellationToken).ConfigureAwait(false); @@ -551,7 +537,6 @@ public sealed class TenantSession : IAsyncDisposable /// Выйти из канала/группы; фаза ready. /// /// Подписанный id диалога. - /// Отмена операции. public async Task LeaveAsync(string dialogId, CancellationToken cancellationToken) { await _gate.WaitAsync(cancellationToken).ConfigureAwait(false); @@ -649,7 +634,6 @@ public sealed class TenantSession : IAsyncDisposable /// Авто-возобновление на старте... /// /// Содержимое файла сессии тенанта. - /// Отмена операции. /// True — сессия возобновлена (ready); false — не авторизована/сбой. public async Task TryResumeAsync(StoredSession stored, CancellationToken cancellationToken) { @@ -708,7 +692,6 @@ public sealed class TenantSession : IAsyncDisposable /// /// Сердцебиение: для фазы "ready" при обрыве соединения — повторный connect. /// - /// Отмена операции. public async Task TryReconnectAsync(CancellationToken cancellationToken) { await _gate.WaitAsync(cancellationToken).ConfigureAwait(false); @@ -748,7 +731,6 @@ public sealed class TenantSession : IAsyncDisposable /// /// Остановка (хост гасится) /// - /// Отмена операции. public async Task FlushAndDisposeAsync(CancellationToken cancellationToken) { await _gate.WaitAsync(cancellationToken).ConfigureAwait(false); diff --git a/src/telegram-service/Deal.Telegram/Telegram/ISessionClient.cs b/src/telegram-service/Deal.Telegram/Telegram/ISessionClient.cs index 5ec76b5..0c0cd2e 100644 --- a/src/telegram-service/Deal.Telegram/Telegram/ISessionClient.cs +++ b/src/telegram-service/Deal.Telegram/Telegram/ISessionClient.cs @@ -33,21 +33,18 @@ public interface ISessionClient : IAsyncDisposable /// /// Устанавливает соединение с Telegram /// - /// Отмена операции. public Task ConnectAsync(CancellationToken cancellationToken); /// /// Запрашивает SMS-код для номера. /// /// Номер в международном формате (как ввёл пользователь). - /// Отмена операции. public Task RequestCodeAsync(string phone, CancellationToken cancellationToken); /// - /// Отправляет SMS-код. Возвращает следующий запрашиваемый шаг + /// Отправляет SMS-код. /// /// Код из SMS/Telegram-сообщения. - /// Отмена операции. /// "password" при необходимости 2FA, иначе null. public Task SubmitCodeAsync(string code, CancellationToken cancellationToken); @@ -55,26 +52,22 @@ public interface ISessionClient : IAsyncDisposable /// Отправляет облачный пароль 2FA. /// /// Облачный пароль. - /// Отмена операции. public Task SubmitPasswordAsync(string password, CancellationToken cancellationToken); /// /// Выполняет QR-вход /// /// Колбэк нового URL QR-входа (tg://login?token=...). - /// Отмена операции (прерывает ожидание сканирования). public Task StartQrAsync(Action onQrUrl, CancellationToken cancellationToken); /// /// Полный выход: отзывает авторизацию на стороне Telegram /// - /// Отмена операции. public Task LogOutAsync(CancellationToken cancellationToken); /// /// Возвращает строку аккаунта для статуса /// - /// Отмена операции. public Task GetAccountAsync(CancellationToken cancellationToken); @@ -82,7 +75,6 @@ public interface ISessionClient : IAsyncDisposable /// Список диалогов аккаунта. /// /// Верхняя граница числа диалогов. - /// Отмена операции. /// Диалоги аккаунта в нейтральном виде. public Task> GetDialogsAsync(int limit, CancellationToken cancellationToken); @@ -91,7 +83,6 @@ public interface ISessionClient : IAsyncDisposable /// /// Подписанный id диалога (каналы "-100…", группы "-…", личные "+…"). /// Сколько последних сообщений запросить. - /// Отмена операции. /// Сообщения диалога (с канальными полями для PushSource). public Task> GetMessagesAsync( string dialogId, @@ -103,7 +94,6 @@ public interface ISessionClient : IAsyncDisposable /// /// Подписанный id диалога (каналы "-100…", группы "-…", личные "+…"). /// Id сообщения в Telegram. - /// Отмена операции. /// Сообщение с текстом либо null (медиа без текста/не найдено). public Task GetMessageAsync( string dialogId, @@ -114,7 +104,6 @@ public interface ISessionClient : IAsyncDisposable /// Помечает весь диалог прочитанным. /// /// Подписанный id диалога. - /// Отмена операции. /// Задача завершения. public Task MarkReadAsync(string dialogId, CancellationToken cancellationToken); @@ -129,7 +118,6 @@ public interface ISessionClient : IAsyncDisposable /// /// Поисковый запрос (ключ задачи discovery). /// Верхняя граница результата. - /// Отмена операции. /// Найденные источники в нейтральном виде (каналы/группы/личные). public Task> SearchAsync( string query, @@ -140,7 +128,6 @@ public interface ISessionClient : IAsyncDisposable /// Инфо об источнике для оценки кандидата /// /// Подписанный id источника («-100…»/«-…»/«+…»). - /// Отмена операции. /// Инфо об источнике (по умолчанию — только id и name=id). public Task GetInfoAsync(string dialogId, CancellationToken cancellationToken); @@ -149,7 +136,6 @@ public interface ISessionClient : IAsyncDisposable /// /// Подписанный id источника. /// Размер выборки. - /// Отмена операции. /// Результат чтения выборки (ok + сообщения либо no_history). public Task ReadForEvalAsync( string dialogId, @@ -160,7 +146,6 @@ public interface ISessionClient : IAsyncDisposable /// Вступить в канал/группу по username. /// /// Username канала/группы (без «@»). - /// Отмена операции. /// Задача завершения (ok=true при успехе). public Task JoinAsync(string username, CancellationToken cancellationToken); @@ -168,7 +153,6 @@ public interface ISessionClient : IAsyncDisposable /// Выйти из канала/группы. /// /// Подписанный id диалога. - /// Отмена операции. /// Задача завершения (ok=true при успехе). public Task LeaveAsync(string dialogId, CancellationToken cancellationToken); }