namespace ZA.CoreService.ESBCertificateManager.Models; public sealed class DeploymentRunResult { public Guid RunId { get; init; } = Guid.NewGuid(); public required IReadOnlyList TargetResults { get; init; } public bool OverallSuccess => TargetResults.All(r => r.Success); public DateTimeOffset StartedAt { get; init; } public DateTimeOffset FinishedAt { get; init; } } public sealed class TargetStepResult { public required int TargetId { get; init; } public required string TargetName { get; init; } public bool Success { get; init; } public required string StatusText { get; init; } public string? Detail { get; init; } public DateTimeOffset StartedAt { get; init; } public DateTimeOffset FinishedAt { get; init; } } public sealed class ValidationIssue { public required string Message { get; init; } public int? TargetId { get; init; } } public sealed class PreflightValidationResult { public bool IsValid => Issues.Count == 0; public List Issues { get; } = []; } public readonly record struct TargetProgressUpdate(int TargetId, string StatusText, bool? SuccessHint);