Class ScheduleResult

java.lang.Object
top.wcpe.beacon.agent.api.ScheduleResult

public final class ScheduleResult extends Object
一次 acquireCandidate 的决策结果(FR-148)。

无论控制面在线决策还是降级本地决策,future 均正常完成(fail-static,不因控制面不可达而异常完成); 调用方以 chosen() 是否为 null 判断本次是否取到候选。

三态结论(FR-244):chosen() == null 这一个事实承载了两种方向相反的处境—— 「本次作用域内确实没有候选」(稳定事实,重试无用)与「决策没做成、结论未知」(当前状态,可重试)。 调用方一律读 state() 区分,不要从 failReason() 的字符串去猜。

  • Constructor Details

  • Method Details

    • chosen

      public CandidateView chosen()
      选中的候选;为 null 表示本次调度失败(见 failReason() 与 state())。
    • traceId

      public String traceId()
      决策唯一标识:控制面决策为服务端 traceId,本地降级为本地 traceId。
    • source

      public DecisionSource source()
      决策来源。
    • failReason

      public String failReason()
      失败原因码(如 no_candidate / no_candidate_in_scope / zone_not_found); 成功为 null。

      它是给人读的诊断串,不是判据:需要区分"空结果"与"没做成"一律读 state()。

    • state

      public ScheduleState state()
      本次结论的类别(FR-244):ScheduleState.CHOSEN / ScheduleState.NO_CANDIDATE (稳定事实)/ ScheduleState.UNAVAILABLE(当前状态、可重试)。

      它与 chosen() 不会互相矛盾:CHOSEN 时 chosen() 恒非 null, 另两态时 chosen() 恒为 null(构造时即校验)。

    • admissionExcludedCount

      public int admissionExcludedCount()
      本次因准入作用域被排除的候选台数(FR-244);没带作用域、或带了但一台都没被排除时为 0。

      它是"决策阶段确实收窄了"在调用方这一侧可直接读到的痕迹:> 0 时调用方可以 留一条读数行(本仓接入方就是这么用的),而不必去猜"对端到底有没有按作用域收窄"。 健康原因造成的排除不计入本数。