using Microsoft.Extensions.Options; using PiiRedaction.Core.Configuration; using PiiRedaction.Infrastructure.Onnx; using PiiRedaction.TestHarness.Wpf.Models; namespace PiiRedaction.TestHarness.Wpf.Services; public sealed class ModelStatusService : IModelStatusService { private readonly EnglishOnnxNerRunner _englishRunner; private readonly TamilOnnxNerRunner _tamilRunner; private readonly PiiRedactionOptions _options; public ModelStatusService( EnglishOnnxNerRunner englishRunner, TamilOnnxNerRunner tamilRunner, IOptions options) { _englishRunner = englishRunner; _tamilRunner = tamilRunner; _options = options.Value; } public ModelStatusSnapshot GetStatus() { var englishPath = OnnxAssetPathResolver.ResolveModelPath( _options.EnglishOnnxModelPath, _options.OnnxModelPath); var tamilPath = OnnxAssetPathResolver.ResolveModelPath(_options.TamilOnnxModelPath); var englishAvailability = _englishRunner.IsModelAvailable ? ModelAvailability.Ready : ModelAvailability.Missing; var tamilAvailability = !_options.EnableTamilNer ? ModelAvailability.Disabled : _tamilRunner.IsModelAvailable ? ModelAvailability.Ready : ModelAvailability.Missing; return new ModelStatusSnapshot( new NerModelStatus("English", englishAvailability, englishPath), new NerModelStatus("Tamil", tamilAvailability, tamilPath)); } }