Class: Phronomy::Agent::ContextParts::Selectors::RecentFirstSelector

Inherits:
Object
  • Object
show all
Defined in:
lib/phronomy/agent/context_parts/selectors/recent_first_selector.rb

Instance Method Summary collapse

Instance Method Details

#order(request:, units:) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/phronomy/agent/context_parts/selectors/recent_first_selector.rb', line 8

def order(request:, units:)
  candidates = request.candidates.to_h { |candidate| [candidate.candidate_id, candidate] }
  Array(units).sort_by do |unit|
    required_rank = (unit.requirement == :optional) ? 1 : 0
    current_rank = current_execution_unit?(request, unit, candidates) ? 0 : 1
    [required_rank, current_rank, -unit.priority, -unit.sequence_range.last]
  end.freeze
end