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);
}