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