feat(cover-letter): add contextual AI workspace

This commit is contained in:
cesnimda
2026-08-28 12:34:17 +02:00
parent e3f938cb42
commit b6dcc7c760
7 changed files with 346 additions and 21 deletions
@@ -32,7 +32,13 @@ public sealed class AiWorkspaceController : ControllerBase
_usageScope = usageScope;
}
public sealed record GenerateRequest(string Module, string? Mode, string? ExtraContext);
public sealed record GenerateRequest(
string Module,
string? Mode,
string? ExtraContext,
string? TargetLanguage = null,
string? CurrentText = null,
string? Action = null);
public sealed record InteractionDto(int Id, string Module, string? Mode, string Title, string Provider, JsonElement Result, int InputCharacterCount, int OutputCharacterCount, int EstimatedTokenCount, DateTimeOffset CreatedAtUtc);
[HttpGet("modules")]
@@ -76,7 +82,7 @@ public sealed class AiWorkspaceController : ControllerBase
using var metering = _usageScope?.Suppress();
var interaction = await _workspace.GenerateAsync(
user.Id, jobId, user.ProfileCvText ?? string.Empty, ResolveName(user),
new AiGenerateRequest(request.Module, request.Mode, request.ExtraContext), ResolveProvider(), ct);
new AiGenerateRequest(request.Module, request.Mode, request.ExtraContext, request.TargetLanguage, request.CurrentText, request.Action), ResolveProvider(), ct);
if (interaction is null)
{
if (reservation is not null) await (_usage ?? new AiUsageMeter(_db!, TimeProvider.System)).ReleaseAsync(reservation.Record.Id, ct);