Отформатировать списки параметров по код-стайлу

Больше двух параметров — каждый на отдельной строке (закрывающая
скобка в конце последнего); два и меньше — в одну строку. Правило
добавлено в docs/spec/Код-стайл-Дейл.md; применено к 628 сигнатурам
в 253 файлах.
This commit is contained in:
Rustam Khalimov
2026-09-11 13:22:56 +03:00
parent 410194b0cb
commit 492950bdd0
255 changed files with 2672 additions and 668 deletions
@@ -179,7 +179,11 @@ public sealed class AiConnectionChecker : IAiConnectionChecker
// ok: Результат подключения.
// message: Сообщение ветки.
// Возвращает: DTO ответа (наружу — camelCase).
private static AiCheckResultDto BuildResult(AiCheckRequest request, string name, bool ok, string message)
private static AiCheckResultDto BuildResult(
AiCheckRequest request,
string name,
bool ok,
string message)
{
return new AiCheckResultDto(
Ok: ok,
@@ -216,7 +220,10 @@ public sealed class AiConnectionChecker : IAiConnectionChecker
// apiStyle: Стиль API провайдера (null — OpenAI-совместимый).
// modelsUri: URL списка моделей (валиден только при возврате true).
// Возвращает: True — URL построен; False — base URL не абсолютный http(s) (SSRF-гейт).
private static bool TryBuildModelsUri(string baseUrl, string? apiStyle, [NotNullWhen(true)] out Uri? modelsUri)
private static bool TryBuildModelsUri(
string baseUrl,
string? apiStyle,
[NotNullWhen(true)] out Uri? modelsUri)
{
modelsUri = null;
if (!Uri.TryCreate(baseUrl, UriKind.Absolute, out Uri? parsed)
@@ -241,7 +248,10 @@ public sealed class AiConnectionChecker : IAiConnectionChecker
// httpRequest: Запрос списка моделей.
// apiKey: Ключ открытым текстом (непустой — ветка ключа пройдена).
// apiStyle: Стиль API провайдера.
private static void AddAuthHeaders(HttpRequestMessage httpRequest, string apiKey, string? apiStyle)
private static void AddAuthHeaders(
HttpRequestMessage httpRequest,
string apiKey,
string? apiStyle)
{
if (apiStyle == AnthropicApiStyle)
{
@@ -98,7 +98,10 @@ public sealed class BudgetedAiTools : IAiTools
/// <inheritdoc />
public async Task<AiEvaluateFitResultDto> EvaluateFitAsync(
string text, string description, IReadOnlyCollection<string> keywords, CancellationToken ct)
string text,
string description,
IReadOnlyCollection<string> keywords,
CancellationToken ct)
{
BudgetStateDto state = await GateStateAsync(ct);
if (state.Allowed)
@@ -128,7 +128,10 @@ public sealed class GrpcAiTools : IAiTools
/// <inheritdoc />
public async Task<AiEvaluateFitResultDto> EvaluateFitAsync(
string text, string description, IReadOnlyCollection<string> keywords, CancellationToken ct)
string text,
string description,
IReadOnlyCollection<string> keywords,
CancellationToken ct)
{
TenantId tenantId = RequireTenant();
try
@@ -210,7 +210,11 @@ public sealed class GrpcMlClient : IMlClient, IMlTrainClient
}
/// <inheritdoc />
public async Task PushAsync(string text, string label, double delta, CancellationToken ct)
public async Task PushAsync(
string text,
string label,
double delta,
CancellationToken ct)
{
// Обучение гарантированно и локально (Ruling 6): сигнал всегда пишется в MlOutbox, отправку батчами
// делает MlOutboxFlushScheduler — и в Local-, и в gRPC-режиме (ml_client.py L67).
@@ -332,7 +336,10 @@ public sealed class GrpcMlClient : IMlClient, IMlTrainClient
// deadline: Лимит времени вызова.
// ct: Токен отмены вызова.
// Возвращает: Опции вызова с заголовками, deadline и отменой.
private CallOptions CallOptions(string tenantId, TimeSpan deadline, CancellationToken ct)
private CallOptions CallOptions(
string tenantId,
TimeSpan deadline,
CancellationToken ct)
=> new(
headers: _connection.CreateMetadata(tenantId),
deadline: DateTime.UtcNow.Add(deadline),
@@ -102,7 +102,11 @@ public sealed class GrpcTelegramClient : ITelegramGateway
}
/// <inheritdoc />
public async Task<TelegramAuthResultDto> StartPhoneAsync(string phone, int apiId, string apiHash, CancellationToken ct)
public async Task<TelegramAuthResultDto> StartPhoneAsync(
string phone,
int apiId,
string apiHash,
CancellationToken ct)
{
TenantId tenantId = RequireTenant();
try
@@ -121,7 +125,10 @@ public sealed class GrpcTelegramClient : ITelegramGateway
}
/// <inheritdoc />
public async Task<TelegramAuthResultDto> StartQrAsync(int apiId, string apiHash, CancellationToken ct)
public async Task<TelegramAuthResultDto> StartQrAsync(
int apiId,
string apiHash,
CancellationToken ct)
{
TenantId tenantId = RequireTenant();
try
@@ -211,7 +218,10 @@ public sealed class GrpcTelegramClient : ITelegramGateway
}
/// <inheritdoc />
public async Task SetMonitorAsync(string dialogId, bool enabled, CancellationToken ct)
public async Task SetMonitorAsync(
string dialogId,
bool enabled,
CancellationToken ct)
{
TenantId tenantId = RequireTenant();
try
@@ -245,7 +255,10 @@ public sealed class GrpcTelegramClient : ITelegramGateway
}
/// <inheritdoc />
public async Task<int> BackfillAsync(string dialogId, bool force, CancellationToken ct)
public async Task<int> BackfillAsync(
string dialogId,
bool force,
CancellationToken ct)
{
TenantId tenantId = RequireTenant();
try
@@ -263,7 +276,10 @@ public sealed class GrpcTelegramClient : ITelegramGateway
}
/// <inheritdoc />
public async Task<IReadOnlyList<TelegramRecentMessageDto>> ReadRecentAsync(string dialogId, int limit, CancellationToken ct)
public async Task<IReadOnlyList<TelegramRecentMessageDto>> ReadRecentAsync(
string dialogId,
int limit,
CancellationToken ct)
{
TenantId tenantId = RequireTenant();
try
@@ -283,7 +299,10 @@ public sealed class GrpcTelegramClient : ITelegramGateway
}
/// <inheritdoc />
public async Task<IReadOnlyList<TelegramDialogEntryDto>> SearchAsync(string query, int limit, CancellationToken ct)
public async Task<IReadOnlyList<TelegramDialogEntryDto>> SearchAsync(
string query,
int limit,
CancellationToken ct)
{
TenantId tenantId = RequireTenant();
try
@@ -327,7 +346,10 @@ public sealed class GrpcTelegramClient : ITelegramGateway
}
/// <inheritdoc />
public async Task<TelegramEvalReadDto> ReadForEvalAsync(string dialogId, int limit, CancellationToken ct)
public async Task<TelegramEvalReadDto> ReadForEvalAsync(
string dialogId,
int limit,
CancellationToken ct)
{
TenantId tenantId = RequireTenant();
try
@@ -404,7 +426,9 @@ public sealed class GrpcTelegramClient : ITelegramGateway
// call: Вызов клиента (принимает клиент и CallOptions).
// Возвращает: Ответ RPC.
private async Task<TReply> CallAsync<TReply>(
TenantId tenantId, TimeSpan deadline, CancellationToken ct,
TenantId tenantId,
TimeSpan deadline,
CancellationToken ct,
Func<TelegramService.TelegramServiceClient, CallOptions, AsyncUnaryCall<TReply>> call)
where TReply : class
{
@@ -424,7 +448,10 @@ public sealed class GrpcTelegramClient : ITelegramGateway
// tenantId: Id тенанта (лог).
// operation: Имя RPC (лог-аудит).
// Возвращает: Исключение для проброса: транспортный сбой — нормализованный RpcException.
private Exception TranslateTransportFailure(Exception exception, TenantId tenantId, string operation)
private Exception TranslateTransportFailure(
Exception exception,
TenantId tenantId,
string operation)
{
// Отмена по токену вызывающего — не ошибка сервиса (пробрасываем как обычно).
if (exception is OperationCanceledException)
@@ -31,6 +31,9 @@ public sealed class LocalAiTools : IAiTools
/// <inheritdoc />
public Task<AiEvaluateFitResultDto> EvaluateFitAsync(
string text, string description, IReadOnlyCollection<string> keywords, CancellationToken ct)
string text,
string description,
IReadOnlyCollection<string> keywords,
CancellationToken ct)
=> throw new NotSupportedException(NotSupportedMessage);
}
@@ -103,7 +103,11 @@ public sealed class LocalMlClient(ISettingsStore store, IMlLearningStore learnin
}
/// <inheritdoc />
public async Task PushAsync(string text, string label, double delta, CancellationToken ct)
public async Task PushAsync(
string text,
string label,
double delta,
CancellationToken ct)
{
// Обучение гарантированно и локально (ml_client.push L4049): действие пользователя — строка
// очереди MlOutbox (отправку в ML-сервис делает воркер этапа 6). Общая логика (trim text/label,
@@ -34,11 +34,18 @@ public sealed class LocalTelegramGateway : ITelegramGateway
}
/// <inheritdoc />
public Task<TelegramAuthResultDto> StartPhoneAsync(string phone, int apiId, string apiHash, CancellationToken ct)
public Task<TelegramAuthResultDto> StartPhoneAsync(
string phone,
int apiId,
string apiHash,
CancellationToken ct)
=> Task.FromResult(new TelegramAuthResultDto(IdlePhase, null));
/// <inheritdoc />
public Task<TelegramAuthResultDto> StartQrAsync(int apiId, string apiHash, CancellationToken ct)
public Task<TelegramAuthResultDto> StartQrAsync(
int apiId,
string apiHash,
CancellationToken ct)
=> Task.FromResult(new TelegramAuthResultDto(IdlePhase, null));
/// <inheritdoc />
@@ -55,20 +62,32 @@ public sealed class LocalTelegramGateway : ITelegramGateway
=> Task.FromResult<IReadOnlyList<TelegramDialogEntryDto>>([]);
/// <inheritdoc />
public Task SetMonitorAsync(string dialogId, bool enabled, CancellationToken ct) => Task.CompletedTask;
public Task SetMonitorAsync(
string dialogId,
bool enabled,
CancellationToken ct) => Task.CompletedTask;
/// <inheritdoc />
public Task SetMonitorAllAsync(bool enabled, CancellationToken ct) => Task.CompletedTask;
/// <inheritdoc />
public Task<int> BackfillAsync(string dialogId, bool force, CancellationToken ct) => Task.FromResult(0);
public Task<int> BackfillAsync(
string dialogId,
bool force,
CancellationToken ct) => Task.FromResult(0);
/// <inheritdoc />
public Task<IReadOnlyList<TelegramRecentMessageDto>> ReadRecentAsync(string dialogId, int limit, CancellationToken ct)
public Task<IReadOnlyList<TelegramRecentMessageDto>> ReadRecentAsync(
string dialogId,
int limit,
CancellationToken ct)
=> Task.FromResult<IReadOnlyList<TelegramRecentMessageDto>>([]);
/// <inheritdoc />
public Task<IReadOnlyList<TelegramDialogEntryDto>> SearchAsync(string query, int limit, CancellationToken ct)
public Task<IReadOnlyList<TelegramDialogEntryDto>> SearchAsync(
string query,
int limit,
CancellationToken ct)
=> Task.FromResult<IReadOnlyList<TelegramDialogEntryDto>>([]);
/// <inheritdoc />
@@ -76,7 +95,10 @@ public sealed class LocalTelegramGateway : ITelegramGateway
=> Task.FromResult(new TelegramChannelInfoDto(dialogId, string.Empty, string.Empty, string.Empty, SourceDefaults.DefaultHue, null, false));
/// <inheritdoc />
public Task<TelegramEvalReadDto> ReadForEvalAsync(string dialogId, int limit, CancellationToken ct)
public Task<TelegramEvalReadDto> ReadForEvalAsync(
string dialogId,
int limit,
CancellationToken ct)
=> Task.FromResult(new TelegramEvalReadDto(false, "no_history", []));
/// <inheritdoc />
@@ -35,7 +35,12 @@ internal static class MlOutboxQueue
/// <param name="delta">Вес сигнала (1.0 — учить, −1.0 — снять метку).</param>
/// <param name="ct">Токен отмены.</param>
/// <returns>Задача завершается после записи строки (отправку делает фоновый флашер).</returns>
public static async Task PushAsync(IMlLearningStore learningStore, string text, string label, double delta, CancellationToken ct)
public static async Task PushAsync(
IMlLearningStore learningStore,
string text,
string label,
double delta,
CancellationToken ct)
{
string trimmedText = (text ?? string.Empty).Trim();
string trimmedLabel = (label ?? string.Empty).Trim();
@@ -91,7 +91,10 @@ public sealed class MlStatusCache
/// <param name="tenantId">Id тенанта (формат N).</param>
/// <param name="service">Статус модели.</param>
/// <param name="reachable">Доступность сервиса.</param>
public void Set(string tenantId, MlServiceStatusDto service, bool reachable)
public void Set(
string tenantId,
MlServiceStatusDto service,
bool reachable)
{
_entries[tenantId] = new Snapshot(service, reachable, _utcNow().ToUnixTimeMilliseconds());
}
@@ -89,7 +89,11 @@ public sealed class TokenUsageRecorder
/// <param name="provider">Id активного провайдера (deepseek/openai/anthropic/…; событие истории).</param>
/// <param name="model">Модель провайдера (событие истории).</param>
/// <param name="ct">Токен отмены.</param>
public async Task AddAsync(Usage? usage, string provider, string model, CancellationToken ct)
public async Task AddAsync(
Usage? usage,
string provider,
string model,
CancellationToken ct)
{
if (usage is null)
{
@@ -124,7 +128,11 @@ public sealed class TokenUsageRecorder
/// <param name="model">Модель/вид локального ML-вызова (событие истории).</param>
/// <param name="ct">Токен отмены.</param>
/// <returns>Оценка токенов (для тестов/наблюдаемости).</returns>
public async Task<long> AddEstimatedAsync(string? text, string provider, string model, CancellationToken ct)
public async Task<long> AddEstimatedAsync(
string? text,
string provider,
string model,
CancellationToken ct)
{
long promptTokens = EstimateTokens(text);
// Прикладная метрика (этап 12, пакет A): вызов локального ML + оценка токенов (та же точка,