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 string CertificateFilePath { get; init; } = string.Empty; public string CertificateFingerprint { get; init; } = string.Empty; } 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 IReadOnlyList Steps { get; init; } = []; public DateTimeOffset StartedAt { get; init; } public DateTimeOffset FinishedAt { get; init; } public bool CopySucceeded { get; init; } public bool RestartSucceeded { get; init; } public bool TlsSucceeded { get; init; } public string? ObservedFingerprint { 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; } = []; }