big refactoring. get rid of static properties and coupled architecture. prepare system for integration tests

This commit is contained in:
Oleksandr Bezdieniezhnykh
2025-11-17 13:14:05 +02:00
parent 22529c26ec
commit e7ea5a8ded
38 changed files with 808 additions and 157 deletions
@@ -0,0 +1,35 @@
using System.Windows.Media;
using Azaion.Common.Database;
using Azaion.Common.DTO;
using Azaion.Common.DTO.Config;
using Microsoft.Extensions.Options;
namespace Azaion.Common.Services;
public class DetectionClassProvider : IDetectionClassProvider
{
private readonly Dictionary<int, DetectionClass> _detectionClasses;
public DetectionClassProvider(IOptions<AnnotationConfig> annotationConfig)
{
_detectionClasses = annotationConfig.Value.DetectionClassesDict;
}
public Dictionary<int, DetectionClass> GetDetectionClasses() => _detectionClasses;
public List<(Color Color, double Confidence)> GetColors(Annotation annotation)
{
return annotation.Detections
.Select(d => (_detectionClasses[d.ClassNumber].Color, d.Confidence))
.ToList();
}
public string GetClassName(Annotation annotation)
{
var detectionClasses = annotation.Detections.Select(x => x.ClassNumber).Distinct().ToList();
return detectionClasses.Count > 1
? string.Join(", ", detectionClasses.Select(x => _detectionClasses[x].UIName))
: _detectionClasses[detectionClasses.FirstOrDefault()].UIName;
}
}