@using MediatR
@using NexusReader.Application.Commands.AI
@using NexusReader.Application.Abstractions.Services
@using NexusReader.UI.Shared.Components.Atoms
@using Microsoft.AspNetCore.Components.Authorization
@inject IMediator Mediator
@inject AuthenticationStateProvider AuthProvider
@if (_isChecking)
{
Weryfikacja...
}
else if (_result != null)
{
@((_result.Score * 100).ToString("0"))% Grounded
}
@code {
[Parameter] public string Answer { get; set; } = string.Empty;
[Parameter] public string Context { get; set; } = string.Empty;
private GroundednessResult? _result;
private bool _isChecking;
protected override async Task OnParametersSetAsync()
{
if (!string.IsNullOrEmpty(Answer) && !string.IsNullOrEmpty(Context) && _result == null)
{
await RunCheck();
}
}
private async Task RunCheck()
{
_isChecking = true;
StateHasChanged();
var authState = await AuthProvider.GetAuthenticationStateAsync();
var tenantId = authState.User.FindFirst("TenantId")?.Value ?? "global";
var res = await Mediator.Send(new VerifyGroundednessCommand(Answer, Context, tenantId));
if (res.IsSuccess)
{
_result = res.Value;
}
_isChecking = false;
StateHasChanged();
}
private string GetStatusClass()
{
if (_result == null) return "";
if (_result.Score >= 0.8) return "status-high";
if (_result.Score >= 0.5) return "status-medium";
return "status-low";
}
private string GetIcon()
{
if (_result == null) return "help";
if (_result.Score >= 0.8) return "check-circle";
if (_result.Score >= 0.5) return "info-circle";
return "alert-triangle";
}
}