namespace IceImportDAL.DTO.IceImportRun; // SignalR live-progress payload — pushed by IceImportBLL.Interfaces.IIceImportRunNotifier // (BLL-side abstraction) through IceImportSL.Hubs.IceImportRunNotifier (the concrete // IHubContext wrapper). Lives in IceImportDAL.DTOs, not // IceImportSL, so both the BLL interface and the SL hub/client-contract can reference the same // shape without BLL taking a dependency on SignalR/ASP.NET types. // // Throttled to stage transitions (Parse/MapAndTransform/Validate/Commit), not per-row — the // pipeline stages (Phase 1) don't expose per-row callbacks, and CLAUDE.md's backpressure guidance // favors coarse-grained pushes over flooding the client anyway. public record IceImportProgressDTO( long RunId, string Stage, int ProcessedRows, int TotalRows, string Status); // Pushed once via IIceImportRunClient.ReceiveCompleted when a run reaches a terminal state. public record IceImportRunSummaryDTO( long RunId, string Status, int RowTotalCount, int SuccessCount, int FailedCount, string? ErrorMessage);