using System; namespace GB5Shared.DTO.JobEngine { // ============================================================ // JobEngine SignalR payload DTOs — pushed by JobEngineHubNotifier // to clients connected to JobEngineHub. Defined in GB5Shared so // both FrameworkBLL (executor / ActionProcessorWorker) and // FrameworkSL (hub) can reference them without circular deps. // Mirrors GB5Shared/DTO/GOP/GopHubDTO.cs's shape. // ============================================================ public sealed class JobStartedDTO { public int JobId { get; init; } public long JobExecutionId { get; init; } public string JobName { get; init; } = string.Empty; public string? TriggerType { get; init; } public string? CorrelationId { get; init; } public DateTime StartedAtUtc { get; init; } } public sealed class JobDispatchedDTO { public int JobId { get; init; } public long JobExecutionId { get; init; } public string? CorrelationId { get; init; } public int ActionCount { get; init; } public DateTime DispatchedAtUtc { get; init; } } public sealed class JobCompletedDTO { public int JobId { get; init; } public long JobExecutionId { get; init; } public string? CorrelationId { get; init; } public int SuccessCount { get; init; } public int TotalCount { get; init; } public long? DurationMs { get; init; } public DateTime CompletedAtUtc { get; init; } } public sealed class JobFailedDTO { public int JobId { get; init; } public long JobExecutionId { get; init; } public string? CorrelationId { get; init; } public string ErrorMessage { get; init; } = string.Empty; public int FailureCount { get; init; } public int TotalCount { get; init; } public DateTime FailedAtUtc { get; init; } } }