using System.Collections.Generic; using System.Linq; namespace GB5Shared.DTO.Qualifier { /// /// Aggregated result returned from IQualifierFacade.ExecuteStageAsync. /// Findings are accumulated across all qualifiers that ran in the requested stage. /// Facts are the hierarchical export from QualifierFactBag.ExportAll(). /// public sealed class QualifierResult { public bool IsSuccess { get; init; } public IReadOnlyList Findings { get; init; } = []; /// /// Hierarchical fact export: { "Document": {...}, "Lines": [...], "Groups": {...} }. /// Set by the facade after all qualifiers complete. /// public IReadOnlyDictionary Facts { get; init; } = new Dictionary(); public bool HasErrors => Findings.Any(f => f.Severity == FindingSeverity.Error); public bool HasWarnings => Findings.Any(f => f.Severity == FindingSeverity.Warning); public static QualifierResult Success( IReadOnlyList findings, IReadOnlyDictionary facts) => new() { IsSuccess = true, Findings = findings, Facts = facts }; public static QualifierResult Failure( IReadOnlyList findings, IReadOnlyDictionary facts) => new() { IsSuccess = false, Findings = findings, Facts = facts }; } }