namespace RobotNet10.FleetManager.Services.TrafficControl.Models; /// /// Represents a complete route for a robot with Base and Horizon segments /// public class RobotRoute { /// /// Robot ID (SerialNumber) /// public string RobotId { get; set; } = string.Empty; /// /// Order ID from VDA5050 /// public string OrderId { get; set; } = string.Empty; /// /// Order Update ID from VDA5050 /// public int OrderUpdateId { get; set; } /// /// Full route (Base + Horizon) /// public List FullRoute { get; set; } = []; /// /// Base: Released segments that robot is currently executing /// public List Base { get; set; } = []; /// /// Horizon: Unreleased segments waiting for conditions /// public List Horizon { get; set; } = []; /// /// Current position index in the route /// public int CurrentSegmentIndex { get; set; } /// /// Route creation timestamp /// public DateTime CreatedAt { get; set; } = DateTime.UtcNow; /// /// Last update timestamp /// public DateTime LastUpdated { get; set; } = DateTime.UtcNow; /// /// Number of reroute attempts for this route (to prevent infinite rerouting) /// public int RerouteAttempts { get; set; } = 0; /// /// Node ID where robot should wait (if WaitAtNode resolution is applied) /// public Guid? WaitNodeId { get; set; } /// /// Time until which robot should wait at WaitNodeId (if WaitAtNode resolution is applied) /// public DateTime? WaitUntil { get; set; } }