@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"; } }