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