Убрать доки, повторяющие имя/значение члена

summary вида «Ключ «x»» удалены; «Ключ «x»: пояснение» сжаты до
пояснения; summary, дословно равные имени/значению, удалены.
This commit is contained in:
Rustam Khalimov
2026-09-11 13:51:31 +03:00
parent 79c931d88e
commit bf4c021ca9
34 changed files with 1 additions and 256 deletions
@@ -19,14 +19,8 @@ internal static class AiTestHost
/// </summary>
public const string ServiceTokenEnvKey = "DEAL_SERVICE_TOKEN";
/// <summary>
/// Ключ gRPC-metadata с service-token
/// </summary>
public const string ServiceTokenMetadataKey = ServiceTokenInterceptor.ServiceTokenMetadataKey;
/// <summary>
/// Ключ gRPC-metadata с tenant-id
/// </summary>
public const string TenantIdMetadataKey = AiServiceImpl.TenantIdMetadataKey;
/// <summary>
-3
View File
@@ -11,9 +11,6 @@ namespace Deal.Ai;
/// </summary>
public sealed class AiServiceImpl : AiService.AiServiceBase
{
/// <summary>
/// Ключ gRPC-metadata с id тенанта.
/// </summary>
public const string TenantIdMetadataKey = "tenant-id";
// Деталь отказа: tenant-id отсутствует в metadata (UNAUTHENTICATED, шаблон MlServiceImpl).
@@ -414,9 +414,6 @@ public static class DiscoveryEndpoints
return Results.Ok(new { items });
}
/// <summary>
/// Ключи из ответа ИИ
/// </summary>
/// <param name="raw">Сырые ключи ответа модели (null — пусто).</param>
/// <returns>Очищенные ключи (не более 30, каждый ≤60 символов).</returns>
public static IReadOnlyList<string> CleanKeywords(IEnumerable<string>? raw)
@@ -15,9 +15,6 @@ public sealed record DiscoveryTaskCreateBody
/// </summary>
public string? Description { get; init; }
/// <summary>
/// Ключевые слова поиска; null/пусто — список пуст
/// </summary>
public IReadOnlyList<string>? Keywords { get; init; }
/// <summary>
@@ -7,14 +7,8 @@ namespace Deal.Api.Extensions;
/// </summary>
public static class AuthHelpers
{
/// <summary>
/// Ключ в <c>HttpContext.Items</c>, по которому SessionMiddleware хранит CurrentUser.
/// </summary>
public const string CurrentUserItemKey = "CurrentUser";
/// <summary>
/// Ключ в <c>HttpContext.Items</c>, по которому OperatorSessionMiddleware хранит CurrentOperator.
/// </summary>
public const string CurrentOperatorItemKey = "CurrentOperator";
/// <summary>
@@ -8,9 +8,6 @@ namespace Deal.Api.Telegram;
/// </summary>
public sealed class IngressServiceTokenInterceptor : Interceptor
{
/// <summary>
/// Ключ gRPC-metadata с токеном сервиса
/// </summary>
public const string ServiceTokenMetadataKey = "service-token";
/// <summary>
@@ -23,9 +23,6 @@ public sealed class TelegramIngressService(
SseBroker broker,
ILogger<TelegramIngressService> logger) : IngressService.IngressServiceBase
{
/// <summary>
/// Ключ gRPC-metadata с id тенанта.
/// </summary>
public const string TenantIdMetadataKey = "tenant-id";
private const string SystemStatusEventType = "system_status";
@@ -15,14 +15,8 @@ public sealed class AiGrpcConnection : IDisposable
/// </summary>
public const string ServiceTokenEnvKey = "DEAL_SERVICE_TOKEN";
/// <summary>
/// Ключ gRPC-metadata с tenant-id.
/// </summary>
public const string TenantIdMetadataKey = "tenant-id";
/// <summary>
/// Ключ gRPC-metadata с service-token.
/// </summary>
public const string ServiceTokenMetadataKey = "service-token";
private readonly GrpcChannel _channel;
@@ -15,14 +15,8 @@ public sealed class MlGrpcConnection : IDisposable
/// </summary>
public const string ServiceTokenEnvKey = "DEAL_SERVICE_TOKEN";
/// <summary>
/// Ключ gRPC-metadata с tenant-id.
/// </summary>
public const string TenantIdMetadataKey = "tenant-id";
/// <summary>
/// Ключ gRPC-metadata с service-token.
/// </summary>
public const string ServiceTokenMetadataKey = "service-token";
private readonly GrpcChannel _channel;
@@ -15,14 +15,8 @@ public sealed class TelegramGrpcConnection : IDisposable
/// </summary>
public const string ServiceTokenEnvKey = "DEAL_SERVICE_TOKEN";
/// <summary>
/// Ключ gRPC-metadata с tenant-id.
/// </summary>
public const string TenantIdMetadataKey = "tenant-id";
/// <summary>
/// Ключ gRPC-metadata с service-token.
/// </summary>
public const string ServiceTokenMetadataKey = "service-token";
private readonly GrpcChannel _channel;
@@ -20,9 +20,6 @@ public sealed class DiscTaskEntity
/// </summary>
public string Description { get; set; } = string.Empty;
/// <summary>
/// Ключевые слова поиска, сериализованные в JSON
/// </summary>
public string KeywordsJson { get; set; } = "[]";
/// <summary>
@@ -5,9 +5,6 @@ namespace Deal.Infrastructure.Persistence.Entities;
/// </summary>
public sealed class GlobalSettingEntity
{
/// <summary>
/// Ключ глобальной настройки
/// </summary>
public string Key { get; set; } = string.Empty;
/// <summary>
@@ -5,9 +5,6 @@ namespace Deal.Modules.Cards.Application.Abstractions;
/// </summary>
public interface IApiSource : ISource
{
/// <summary>
/// Ключ интеграции/провайдера
/// </summary>
public string ProviderId { get; }
/// <summary>
@@ -12,14 +12,8 @@ public interface IContainerRules
/// </summary>
public string Mode { get; }
/// <summary>
/// Ключевые слова/фразы
/// </summary>
public IReadOnlyList<string> Keywords { get; }
/// <summary>
/// Ключевые технологии/стек-атрибуты
/// </summary>
public IReadOnlyList<string> Stack { get; }
/// <summary>
@@ -5,9 +5,6 @@ namespace Deal.Modules.Cards.Application.Abstractions;
/// </summary>
public interface IFileSource : ISource
{
/// <summary>
/// Ключ объекта в хранилище
/// </summary>
public string ObjectKey { get; }
/// <summary>
@@ -25,8 +25,5 @@ public sealed record CardFile
/// </summary>
public string Kind { get; init; } = "other";
/// <summary>
/// Ключ объекта в хранилище.
/// </summary>
public string ObjectKey { get; init; } = string.Empty;
}
@@ -15,9 +15,6 @@ public sealed record DiscoveryTaskDraft
/// </summary>
public string Description { get; init; } = string.Empty;
/// <summary>
/// Ключевые слова поиска; null → пустой список
/// </summary>
public IReadOnlyList<string>? Keywords { get; init; }
/// <summary>
@@ -20,9 +20,6 @@ public sealed record DiscoveryTaskRow
/// </summary>
public string Description { get; init; } = string.Empty;
/// <summary>
/// Ключевые слова поиска
/// </summary>
public IReadOnlyList<string> Keywords { get; init; } = Array.Empty<string>();
/// <summary>
@@ -5,8 +5,5 @@ namespace Deal.Modules.Settings.Application.Models;
/// </summary>
public static class GlobalSettingsKeys
{
/// <summary>
/// Ключ «telegramKeys»
/// </summary>
public const string TelegramKeys = "telegramKeys";
}
@@ -49,143 +49,65 @@ public static class SettingsKeys
// ── Int: целочисленные настройки ──
/// <summary>
/// Ключ «archiveAfterDays»
/// </summary>
public const string ArchiveAfterDays = "archiveAfterDays";
/// <summary>
/// Ключ «archiveClearDays»
/// </summary>
public const string ArchiveClearDays = "archiveClearDays";
/// <summary>
/// Ключ «trashClearDays»
/// </summary>
public const string TrashClearDays = "trashClearDays";
/// <summary>
/// Ключ «minLen»: минимальная длина сообщения для -1 фильтра
/// Минимальная длина сообщения для -1 фильтра
/// </summary>
public const string MinLen = "minLen";
/// <summary>
/// Ключ «discJoinLimit»
/// </summary>
public const string DiscJoinLimit = "discJoinLimit";
/// <summary>
/// Ключ «discJoinDelayMin»
/// </summary>
public const string DiscJoinDelayMin = "discJoinDelayMin";
/// <summary>
/// Ключ «discJoinDelayMax»
/// </summary>
public const string DiscJoinDelayMax = "discJoinDelayMax";
/// <summary>
/// Ключ «discEvalSample»
/// </summary>
public const string DiscEvalSample = "discEvalSample";
/// <summary>
/// Ключ «discEvalThreshold»
/// </summary>
public const string DiscEvalThreshold = "discEvalThreshold";
/// <summary>
/// Ключ «excludeBudgetFrom»
/// </summary>
public const string ExcludeBudgetFrom = "excludeBudgetFrom";
/// <summary>
/// Ключ «excludeBudgetTo»
/// </summary>
public const string ExcludeBudgetTo = "excludeBudgetTo";
// ── Bool: булевы настройки ──
/// <summary>
/// Ключ «autoArchive»
/// </summary>
public const string AutoArchive = "autoArchive";
/// <summary>
/// Ключ «aiEnabled»
/// </summary>
public const string AiEnabled = "aiEnabled";
/// <summary>
/// Ключ «aiFilterEnabled»
/// </summary>
public const string AiFilterEnabled = "aiFilterEnabled";
/// <summary>
/// Ключ «conversionOn»
/// </summary>
public const string ConversionOn = "conversionOn";
/// <summary>
/// Ключ «remindersEnabled»
/// </summary>
public const string RemindersEnabled = "remindersEnabled";
/// <summary>
/// Ключ «mlEnabled»
/// </summary>
public const string MlEnabled = "mlEnabled";
/// <summary>
/// Ключ «blockResumes»
/// </summary>
public const string BlockResumes = "blockResumes";
/// <summary>
/// Ключ «budgetRequiredHire»
/// </summary>
public const string BudgetRequiredHire = "budgetRequiredHire";
/// <summary>
/// Ключ «budgetRequiredOrder»
/// </summary>
public const string BudgetRequiredOrder = "budgetRequiredOrder";
/// <summary>
/// Ключ «autoMonitorNew»
/// </summary>
public const string AutoMonitorNew = "autoMonitorNew";
/// <summary>
/// Ключ «discPaused»
/// </summary>
public const string DiscPaused = "discPaused";
// ── String: строковые настройки ──
/// <summary>
/// Ключ «targetCurrency»
/// </summary>
public const string TargetCurrency = "targetCurrency";
/// <summary>
/// Ключ «rateSource»
/// </summary>
public const string RateSource = "rateSource";
/// <summary>
/// Ключ «aiProvider»
/// </summary>
public const string AiProvider = "aiProvider";
/// <summary>
/// Ключ «aiPrompt»
/// </summary>
public const string AiPrompt = "aiPrompt";
/// <summary>
/// Ключ «aiFilterPrompt»
/// </summary>
public const string AiFilterPrompt = "aiFilterPrompt";
/// <summary>
@@ -193,83 +115,38 @@ public static class SettingsKeys
/// </summary>
public const string CardPrompt = "cardPrompt";
/// <summary>
/// Ключ «domainDescription»
/// </summary>
public const string DomainDescription = "domainDescription";
/// <summary>
/// Ключ «wantedType»
/// </summary>
public const string WantedType = "wantedType";
/// <summary>
/// Ключ «hireLabel»
/// </summary>
public const string HireLabel = "hireLabel";
/// <summary>
/// Ключ «orderLabel»
/// </summary>
public const string OrderLabel = "orderLabel";
// ── List: списки строк ──
/// <summary>
/// Ключ «stopPhrases»
/// </summary>
public const string StopPhrases = "stopPhrases";
/// <summary>
/// Ключ «domainKeywords»
/// </summary>
public const string DomainKeywords = "domainKeywords";
/// <summary>
/// Ключ «hireMarkers»
/// </summary>
public const string HireMarkers = "hireMarkers";
/// <summary>
/// Ключ «levelTerms»
/// </summary>
public const string LevelTerms = "levelTerms";
/// <summary>
/// Ключ «resumeMarkers»
/// </summary>
public const string ResumeMarkers = "resumeMarkers";
/// <summary>
/// Ключ «excludeKeywords»
/// </summary>
public const string ExcludeKeywords = "excludeKeywords";
/// <summary>
/// Ключ «excludeLocations»
/// </summary>
public const string ExcludeLocations = "excludeLocations";
/// <summary>
/// Ключ «excludeTypes»
/// </summary>
public const string ExcludeTypes = "excludeTypes";
// ── Dict / special ──
/// <summary>
/// Ключ «colState»
/// </summary>
public const string ColState = "colState";
/// <summary>
/// Ключ «myPrompts»
/// </summary>
public const string MyPrompts = "myPrompts";
/// <summary>
/// Ключ «aiConfigs»
/// </summary>
public const string AiConfigs = "aiConfigs";
/// <summary>
@@ -29,9 +29,6 @@ public sealed class DiscoveryEndpointsHelpersTests
Assert.Equal(["кл юч", "тест"], keywords);
}
/// <summary>
/// Ключ длиннее 60 символов отбрасывается
/// </summary>
[Fact]
public void CleanKeywords_DropsOverlongKeyword()
{
@@ -57,9 +57,6 @@ public sealed class MtlsOptionsTests
Assert.False(options.Enabled);
}
/// <summary>
/// Ключ DEAL_MTLS_ENABLED отсутствует в окружении — флаг выключен.
/// </summary>
[Fact]
public void FromConfiguration_MissingEnabledKey_EnabledFalse()
{
@@ -10,9 +10,6 @@ public sealed class FakeGlobalSettingsStore : IGlobalSettingsStore
{
private readonly Dictionary<string, SettingValue> _rows = new(StringComparer.Ordinal);
/// <summary>
/// Ключи сохранённых строк
/// </summary>
public IReadOnlyCollection<string> Keys => _rows.Keys.ToList();
/// <summary>
@@ -10,9 +10,6 @@ public sealed class FakeSettingsStore : ISettingsStore
{
private readonly Dictionary<string, SettingValue> _rows = new(StringComparer.Ordinal);
/// <summary>
/// Ключи сохранённых строк
/// </summary>
public IReadOnlyCollection<string> Keys => _rows.Keys.ToList();
/// <summary>
@@ -39,14 +39,8 @@ internal static class TelegramIngressTestHost
/// </summary>
public const int RpcDeadlineSeconds = 10;
/// <summary>
/// Ключ gRPC-metadata с service-token
/// </summary>
public const string ServiceTokenMetadataKey = IngressServiceTokenInterceptor.ServiceTokenMetadataKey;
/// <summary>
/// Ключ gRPC-metadata с tenant-id
/// </summary>
public const string TenantIdMetadataKey = TelegramIngressService.TenantIdMetadataKey;
/// <summary>
@@ -14,9 +14,6 @@ namespace Deal.Grpc.Hosting.Interceptors;
/// </summary>
public sealed class ServiceTokenInterceptor : Interceptor
{
/// <summary>
/// Ключ gRPC-metadata с токеном сервиса
/// </summary>
public const string ServiceTokenMetadataKey = "service-token";
// Префикс методов стандартного gRPC-health, освобождённых от проверки токена.
@@ -23,14 +23,8 @@ internal static class MlTestHost
/// </summary>
public const string DataDirEnvKey = MlOptions.DataDirEnvVarName;
/// <summary>
/// Ключ gRPC-metadata с service-token
/// </summary>
public const string ServiceTokenMetadataKey = ServiceTokenInterceptor.ServiceTokenMetadataKey;
/// <summary>
/// Ключ gRPC-metadata с tenant-id
/// </summary>
public const string TenantIdMetadataKey = MlServiceImpl.TenantIdMetadataKey;
/// <summary>
-3
View File
@@ -9,9 +9,6 @@ namespace Deal.Ml;
/// </summary>
public sealed class MlServiceImpl : MlService.MlServiceBase
{
/// <summary>
/// Ключ gRPC-metadata с id тенанта.
/// </summary>
public const string TenantIdMetadataKey = "tenant-id";
private const string TenantIdMissingDetail = "tenant-id отсутствует в metadata";
@@ -40,14 +40,8 @@ internal static class TelegramTestHost
/// </summary>
public const string SessionDirEnvKey = TgOptions.SessionDirEnvVarName;
/// <summary>
/// Ключ gRPC-metadata с service-token
/// </summary>
public const string ServiceTokenMetadataKey = ServiceTokenInterceptor.ServiceTokenMetadataKey;
/// <summary>
/// Ключ gRPC-metadata с tenant-id
/// </summary>
public const string TenantIdMetadataKey = TelegramServiceImpl.TenantIdMetadataKey;
/// <summary>
@@ -14,14 +14,8 @@ namespace Deal.Telegram.Core;
/// </summary>
public sealed class CoreIngressClient : ICoreIngressClient
{
/// <summary>
/// Ключ gRPC-metadata с id тенанта.
/// </summary>
public const string TenantIdMetadataKey = "tenant-id";
/// <summary>
/// Ключ gRPC-metadata с service-token.
/// </summary>
public const string ServiceTokenMetadataKey = "service-token";
private readonly CoreIngressOptions _options;
@@ -10,9 +10,6 @@ public sealed class CoreIngressOptions
/// </summary>
public const string IngressEndpointEnvVarName = "SERVICES__CORE__INGRESS";
/// <summary>
/// Ключ конфигурации адреса ингресса
/// </summary>
public const string IngressEndpointConfigKey = "Services:Core:Ingress";
/// <summary>
@@ -5,9 +5,6 @@ namespace Deal.Telegram.Sessions;
/// </summary>
public static class SessionErrorMessages
{
/// <summary>
/// Ключи приложения не переданы ядром
/// </summary>
public const string NoApiKeys = "Сначала сохраните Telegram api_id и api_hash в настройках";
/// <summary>
@@ -100,8 +97,5 @@ public static class SessionErrorMessages
/// </summary>
public const string SignUpRequired = "Номер не зарегистрирован в Telegram — зарегистрируйте его в приложении Telegram";
/// <summary>
/// Ключ шифрования сессий не задан в env
/// </summary>
public const string SessionKeyNotConfigured = "Ключ шифрования сессий не задан (DEAL_TELEGRAM_SESSION_KEY)";
}
@@ -31,9 +31,6 @@ public sealed class TgOptions
SessionsDirectory = sessionsDirectory;
}
/// <summary>
/// Ключ AES-256-GCM обёртки файлов сессий
/// </summary>
public byte[] SessionKey { get; }
/// <summary>
@@ -14,9 +14,6 @@ namespace Deal.Telegram;
/// </summary>
public sealed class TelegramServiceImpl : TelegramService.TelegramServiceBase
{
/// <summary>
/// Ключ gRPC-metadata с id тенанта.
/// </summary>
public const string TenantIdMetadataKey = "tenant-id";
private const int DialogListLimit = 500;