using OTSSignsOrchestrator.Server.Data.Entities;
namespace OTSSignsOrchestrator.Server.Workers;
///
/// Common interface for all provisioning pipelines (Phase1, Phase2, etc.).
/// Resolved from DI via and matched by
/// .
///
public interface IProvisioningPipeline
{
/// The this pipeline handles (e.g. "provision", "bootstrap").
string HandlesJobType { get; }
/// Execute the pipeline steps for the given job.
Task ExecuteAsync(Job job, CancellationToken ct);
}
///
/// Shared context extracted from JSON and the associated
/// / entities. Passed between pipeline steps.
///
public sealed record PipelineContext
{
public required Guid JobId { get; init; }
public required Guid CustomerId { get; init; }
public required Guid InstanceId { get; init; }
public required string Abbreviation { get; init; }
public required string CompanyName { get; init; }
public required string AdminEmail { get; init; }
public required string AdminFirstName { get; init; }
public required string InstanceUrl { get; init; }
public required string DockerStackName { get; init; }
/// Raw parameters JSON from the Job entity for step-specific overrides.
public string? ParametersJson { get; init; }
}