Search/AdvisoryAI and DAL conversion to EF finishes up. Preparation for microservices consolidation.

This commit is contained in:
master
2026-02-25 18:19:22 +02:00
parent 4db038123b
commit 63c70a6d37
447 changed files with 52257 additions and 2636 deletions

View File

@@ -24,7 +24,8 @@ public sealed record UnifiedSearchRequest(
int? K = null,
UnifiedSearchFilter? Filters = null,
bool IncludeSynthesis = true,
bool IncludeDebug = false);
bool IncludeDebug = false,
AmbientContext? Ambient = null);
public sealed record UnifiedSearchFilter
{
@@ -50,6 +51,24 @@ public sealed record UnifiedSearchFilter
/// Not serialized in API responses.
/// </summary>
public IReadOnlyList<string>? UserScopes { get; init; }
/// <summary>
/// Optional user identifier for ephemeral session context carry-forward.
/// </summary>
public string? UserId { get; init; }
}
public sealed record AmbientContext
{
public string? CurrentRoute { get; init; }
public IReadOnlyList<string>? VisibleEntityKeys { get; init; }
public IReadOnlyList<string>? RecentSearches { get; init; }
public string? SessionId { get; init; }
public bool ResetSession { get; init; }
}
public sealed record SearchSuggestion(string Text, string Reason);
@@ -88,6 +107,28 @@ public sealed record EntityCard
public IReadOnlyList<string> Sources { get; init; } = [];
public EntityCardPreview? Preview { get; init; }
public IReadOnlyList<EntityCardFacet> Facets { get; init; } = [];
public IReadOnlyList<string> Connections { get; init; } = [];
public IReadOnlyDictionary<string, string> SynthesisHints { get; init; } =
new Dictionary<string, string>(StringComparer.Ordinal);
}
public sealed record EntityCardFacet
{
public string Domain { get; init; } = "knowledge";
public string Title { get; init; } = string.Empty;
public string Snippet { get; init; } = string.Empty;
public double Score { get; init; }
public IReadOnlyDictionary<string, string>? Metadata { get; init; }
public IReadOnlyList<EntityCardAction> Actions { get; init; } = [];
}
public sealed record EntityCardPreview(
@@ -138,7 +179,15 @@ public sealed record UnifiedSearchDiagnostics(
long DurationMs,
bool UsedVector,
string Mode,
QueryPlan? Plan = null);
QueryPlan? Plan = null,
IReadOnlyList<FederationBackendDiagnostic>? Federation = null);
public sealed record FederationBackendDiagnostic(
string Backend,
int ResultCount,
long DurationMs,
bool TimedOut,
string Status);
public sealed record QueryPlan
{
@@ -152,6 +201,9 @@ public sealed record QueryPlan
public IReadOnlyDictionary<string, double> DomainWeights { get; init; } =
new Dictionary<string, double>(StringComparer.Ordinal);
public IReadOnlyDictionary<string, double> ContextEntityBoosts { get; init; } =
new Dictionary<string, double>(StringComparer.Ordinal);
}
public sealed record EntityMention(