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