using System.Threading; using System.Threading.Tasks; using GB5Shared.DTO.Framework.Login; using GB5Shared.DTO.GOP; namespace FrameworkBLL.GOP.Worker { // ============================================================ // INodeExecutor — one implementation per NodeType. // // Registered as keyed scoped services: // services.AddKeyedScoped("Qualifier"); // services.AddKeyedScoped("Mapper"); // services.AddKeyedScoped("ApiCall"); // // GopExecutionPipeline dispatches: // sp.GetRequiredKeyedService(step.NodeType) // ============================================================ public interface INodeExecutor { /// "Qualifier", "Mapper", or "ApiCall". string NodeType { get; } /// /// Executes a single pipeline step. /// Returns the output payload JSON (stored in TGOPEXECUTIONNODELOG.RESPONSEPAYLOADJSON). /// Throws on unrecoverable failure (after all retries exhausted). /// Task ExecuteAsync( GopFlowSnapshotStepDTO step, GopExecutionHeaderDTO header, string? inputPayloadJson, LoginDTO loginDTO, CancellationToken ct); } }