using KArtSell.BuildingBlocks.Time;

namespace KArtSell.Modules.ModelOperations.Observability;

public sealed class StubObservabilityService(IClock clock) : IObservabilityService
{
    public async Task<ObservabilityMetricsDto> GetMetricsAsync(CancellationToken cancellationToken)
    {
        await Task.Delay(10, cancellationToken);
        
        return new ObservabilityMetricsDto
        {
            BatchSla = new BatchSlaMetrics
            {
                QueueDepth = 0,
                AverageCompletionTimeSeconds = 0,
                RetryRate = 0
            },
            DataQuality = new DataQualityMetrics
            {
                QuarantineCount = 0,
                AgeMinutes = 0,
                TopFailureReasons = new()
            },
            DuplicateDetection = new DuplicateDetectionMetrics
            {
                ConstraintViolationCount = 0,
                LastDetected = clock.UtcNow.DateTime
            },
            Reconciliation = new ReconciliationMetrics
            {
                CompletenessPercentage = 100,
                AuditRecordsCount = 0
            },
            ModelDrift = new ModelDriftMetrics
            {
                OosPerformanceValue = 0,
                BaselineComparison = 0,
                DegradationFlag = false
            }
        };
    }
}
