using AGVNavigationCore.Models; namespace AGVNavigationCore.PathFinding.Validation { /// /// 도킹 검증 결과 /// public class DockingValidationResult { /// /// 도킹 검증이 필요한지 여부 (목적지가 도킹 대상인 경우) /// public bool IsValidationRequired { get; set; } /// /// 도킹 검증 통과 여부 /// public bool IsValid { get; set; } /// /// 목적지 노드 ID /// public string TargetNodeId { get; set; } /// /// 목적지 노드 타입 /// public NodeType TargetNodeType { get; set; } /// /// 필요한 도킹 방향 /// public AgvDirection RequiredDockingDirection { get; set; } /// /// 계산된 경로의 마지막 방향 /// public AgvDirection CalculatedFinalDirection { get; set; } /// /// 검증 오류 메시지 (실패시) /// public string ValidationError { get; set; } /// /// 기본 생성자 /// public DockingValidationResult() { IsValidationRequired = false; IsValid = true; TargetNodeId = string.Empty; RequiredDockingDirection = AgvDirection.Forward; CalculatedFinalDirection = AgvDirection.Forward; ValidationError = string.Empty; } /// /// 검증 불필요한 경우 생성 /// public static DockingValidationResult CreateNotRequired() { return new DockingValidationResult { IsValidationRequired = false, IsValid = true }; } /// /// 검증 성공 결과 생성 /// public static DockingValidationResult CreateValid(string targetNodeId, NodeType nodeType, AgvDirection requiredDirection, AgvDirection calculatedDirection) { return new DockingValidationResult { IsValidationRequired = true, IsValid = true, TargetNodeId = targetNodeId, TargetNodeType = nodeType, RequiredDockingDirection = requiredDirection, CalculatedFinalDirection = calculatedDirection }; } /// /// 검증 실패 결과 생성 /// public static DockingValidationResult CreateInvalid(string targetNodeId, NodeType nodeType, AgvDirection requiredDirection, AgvDirection calculatedDirection, string error) { return new DockingValidationResult { IsValidationRequired = true, IsValid = false, TargetNodeId = targetNodeId, TargetNodeType = nodeType, RequiredDockingDirection = requiredDirection, CalculatedFinalDirection = calculatedDirection, ValidationError = error }; } } }