feat(backend): add LLM provider abstraction, contextual ranking and explanations

Add a pluggable LLM provider with an offline template fallback, prompt builder, contextual match scoring (area/location boosts, availability), per-solution explanations and in-memory request limiting for cost control.
This commit is contained in:
Rafał Tyński
2026-10-04 02:52:45 +02:00
parent 182c26d9f8
commit 03e2d66ca4
11 changed files with 385 additions and 23 deletions
@@ -0,0 +1,15 @@
namespace TarninaHub.Application.Matchmaking;
/// <summary>
/// Default provider used when no external LLM is configured. Keeps the system
/// fully offline/deterministic; matchmaking falls back to template rationales.
/// </summary>
public sealed class NullLlmProvider : ILlmProvider
{
public bool IsConfigured => false;
public Task<string?> CompleteAsync(
string systemPrompt,
string userPrompt,
CancellationToken cancellationToken) => Task.FromResult<string?>(null);
}