using System.Collections.Generic; namespace OpenNest.Engine.Jobs; public enum NestJobStage { EvaluatingCandidate, PlateCommitted, /// /// The engine's best whole-job plan so far, in . Not /// validated and possibly replaced by a later plan; never counts as committed. /// PlanImproved, } /// /// Whole-job progress. Counts change only after a physical sheet commits; LegacyProgress is optional /// non-authoritative detail from a plate nester while its candidate remains under evaluation. /// public sealed record NestJobProgress( NestJobStage Stage, string StockId, int PlateIndex, int CommittedPlates, int CommittedParts, NestProgress LegacyProgress = null, NestJobResult Plan = null ) { /// /// as displayable sheets, filled in by for /// reports. Parts use detached drawings built from /// the job geometry, so they never touch the caller's drawings or quantities. /// public IReadOnlyList PlanSheets { get; init; } }