using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using GB5Shared.DTO.Framework.Login; using GB5Shared.DTO.Qualifier; namespace GB5Shared.GOP.Qualifier.Executors { // ============================================================ // IQualifierMethodExecutor // // One implementation per ExecutionMode (NCalc / DataSource / Service). // Registered as keyed scoped services in DI: // services.AddKeyedScoped("NCalc"); // services.AddKeyedScoped("DataSource"); // services.AddKeyedScoped("Service"); // // Dispatch: sp.GetRequiredKeyedService(modeKey) // ============================================================ public interface IQualifierMethodExecutor { /// "NCalc", "DataSource", or "Service" — matches keyed DI registration. string ExecutionModeKey { get; } /// /// Executes the method and writes any output facts to ctx.Facts. /// Returns zero or more findings (validation failures, warnings, info). /// Task> ExecuteAsync( SnapshotMethod method, QualifierExecutionContext ctx, LoginDTO loginDTO, CancellationToken ct); } }