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; }
}