GlobalNavigation.cs 4.15 KB
namespace Rcs.Domain.Settings;

/// <summary>
/// 全局实时导航与路径 CAS 相关配置。
/// </summary>
public class GlobalNavigationSettings
{
    /// <summary>
    /// 全局协调器配置。
    /// </summary>
    public GlobalCoordinatorSettings Coordinator { get; set; } = new();

    /// <summary>
    /// 路径 CAS 配置。
    /// </summary>
    public GlobalPathCasSettings PathCas { get; set; } = new();
}

/// <summary>
/// 全局协调器运行参数配置。
/// </summary>
public class GlobalCoordinatorSettings
{
    /// <summary>
    /// 恢复为正常模式所需的稳定通过次数。
    /// </summary>
    public int ResumeStablePassThreshold { get; set; } = 2;

    /// <summary>
    /// 恢复调度冷却时间(秒)。
    /// </summary>
    public int ResumeDispatchCooldownSeconds { get; set; } = 2;

    /// <summary>
    /// 恢复扫描间隔(毫秒)。
    /// </summary>
    public int ResumeScanIntervalMilliseconds { get; set; } = 300;

    /// <summary>
    /// 短等待时长(秒)。
    /// </summary>
    public int HoldSecondsShort { get; set; } = 2;

    /// <summary>
    /// 排队等待时长(秒)。
    /// </summary>
    public int HoldSecondsQueue { get; set; } = 3;

    /// <summary>
    /// 排队状态过期时间(秒)。
    /// </summary>
    public int QueueStaleSeconds { get; set; } = 45;

    /// <summary>
    /// 升级到就近等待策略的失败阈值。
    /// </summary>
    public int ConflictEscalateNearestWaitThreshold { get; set; } = 2;

    /// <summary>
    /// 升级到局部绕行策略的失败阈值。
    /// </summary>
    public int ConflictEscalateDetourThreshold { get; set; } = 3;

    /// <summary>
    /// 升级到侧向让行策略的失败阈值。
    /// </summary>
    public int ConflictEscalateLateralYieldThreshold { get; set; } = 4;

    /// <summary>
    /// 升级到泊车让行策略的失败阈值。
    /// </summary>
    public int ConflictEscalateParkingThreshold { get; set; } = 4;

    /// <summary>
    /// 升级到退让策略的失败阈值。
    /// </summary>
    public int ConflictEscalateRetreatThreshold { get; set; } = 5;

    /// <summary>
    /// 升级到重规划策略的失败阈值。
    /// </summary>
    public int ConflictEscalateReplanThreshold { get; set; } = 6;

    /// <summary>
    /// 进入阻塞保护态的失败阈值。
    /// </summary>
    public int ConflictEscalateBlockedThreshold { get; set; } = 9;

    /// <summary>
    /// 阻塞态等待时长(秒)。
    /// </summary>
    public int BlockedHoldSeconds { get; set; } = 5;

    /// <summary>
    /// 是否启用侧向让行。
    /// </summary>
    public bool EnableLateralYield { get; set; } = true;

    /// <summary>
    /// 是否启用泊车让行。
    /// </summary>
    public bool EnableParkingYield { get; set; } = true;

    /// <summary>
    /// 是否启用退让。
    /// </summary>
    public bool EnableRetreat { get; set; } = true;

    /// <summary>
    /// 决策指标日志间隔(秒)。
    /// </summary>
    public int DecisionMetricsIntervalSeconds { get; set; } = 60;
}

/// <summary>
/// 路径 CAS 并发控制参数配置。
/// </summary>
public class GlobalPathCasSettings
{
    /// <summary>
    /// 指标日志输出间隔(秒)。
    /// </summary>
    public int MetricsIntervalSeconds { get; set; } = 60;

    /// <summary>
    /// 冲突统计窗口时长(秒)。
    /// </summary>
    public int WindowDurationSeconds { get; set; } = 30;

    /// <summary>
    /// 启动高冲突判断所需的最小尝试次数。
    /// </summary>
    public int HighConflictMinAttempts { get; set; } = 20;

    /// <summary>
    /// 高冲突比例阈值(0~1)。
    /// </summary>
    public double HighConflictRatioThreshold { get; set; } = 0.35;

    /// <summary>
    /// 是否启用高冲突退避。
    /// </summary>
    public bool EnableHighConflictBackoff { get; set; } = true;

    /// <summary>
    /// 退避最小时长(毫秒)。
    /// </summary>
    public int BackoffMinMs { get; set; } = 40;

    /// <summary>
    /// 退避最大时长(毫秒)。
    /// </summary>
    public int BackoffMaxMs { get; set; } = 140;
}