Вынести условия-предикаты в extension-методы

HasUser из 13 endpoint-файлов сведён в AuthHelpers.HasUser;
15 приватных предикатов заменены extension-методами с удалением
дублирующих приватных методов: IsCommunicationFailure,
IsTransportFailure, IsPrivateEndpoint, IsConfigured, IsTrue,
IsExpired, IsFailedLogin/IsSuccessfulLogin, HasChanges, HasBudget,
HasAnyTerm, IsCurrencyLetter, IsEmojiCodePoint, ContainsFooterHint,
IsTypeLabel.
This commit is contained in:
Rustam Khalimov
2026-09-11 13:08:47 +03:00
parent 9e07568ddd
commit 413eaac48c
40 changed files with 1091 additions and 993 deletions
@@ -0,0 +1,17 @@
namespace Deal.Ml.Model;
/// <summary>
/// Расширения <see cref="string"/> для меток классов ML-модели.
/// </summary>
internal static class LabelExtensions
{
/// <summary>
/// Метка внутреннего типа заявки (префикс t:).
/// </summary>
/// <param name="label">Метка класса.</param>
/// <returns>True — метка является внутренним типом заявки (префикс t:).</returns>
public static bool IsTypeLabel(this string label)
{
return label.StartsWith(ModelConstants.TypeLabelPrefix, StringComparison.Ordinal);
}
}
@@ -115,7 +115,7 @@ public static class OnlineNaiveBayes
MlTypeDecision? typeDecision = DecideType(state, scores, prior, margin);
// ── колонка/спам: без t:* классов ────────────────────────────────────────────────
List<string> regularLabels = state.Classes.Keys.Where(label => !IsTypeLabel(label)).ToList();
List<string> regularLabels = state.Classes.Keys.Where(label => !label.IsTypeLabel()).ToList();
if (regularLabels.Count == 0 || scores.Count == 0)
{
return TakeFalse(state, typeDecision);
@@ -288,11 +288,6 @@ public static class OnlineNaiveBayes
private static Dictionary<string, double>? TryGetTerms(ModelState state, string label)
=> state.TermsByLabel.TryGetValue(label, out Dictionary<string, double>? terms) ? terms : null;
// Метка внутреннего типа заявки (префикс t:).
// label: Метка класса.
private static bool IsTypeLabel(string label)
=> label.StartsWith(ModelConstants.TypeLabelPrefix, StringComparison.Ordinal);
// Фиксированный ответ «не уверен» (нет опыта/терминов — модель не решает).
// ready: Готовность модели на момент вызова.
private static MlPredictResult NotReady(bool ready)