Module: Legion::Extensions::Developer::Helpers::FeedbackSummarizer

Extended by:
FeedbackSummarizer
Included in:
FeedbackSummarizer
Defined in:
lib/legion/extensions/developer/helpers/feedback_summarizer.rb

Constant Summary collapse

DEFAULT_MAX_ENTRIES =
3

Instance Method Summary collapse

Instance Method Details

#extract_unique_issues(feedback_history:) ⇒ Object



33
34
35
36
37
# File 'lib/legion/extensions/developer/helpers/feedback_summarizer.rb', line 33

def extract_unique_issues(feedback_history:)
  feedback_history
    .flat_map { |entry| Array(entry[:issues]) }
    .uniq
end

#needs_summarization?(feedback_history:, threshold: 2) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/legion/extensions/developer/helpers/feedback_summarizer.rb', line 29

def needs_summarization?(feedback_history:, threshold: 2)
  feedback_history.size >= threshold
end

#summarize(feedback_history:, max_entries: DEFAULT_MAX_ENTRIES) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/legion/extensions/developer/helpers/feedback_summarizer.rb', line 12

def summarize(feedback_history:, max_entries: DEFAULT_MAX_ENTRIES)
  return feedback_history if feedback_history.size <= max_entries

  unique_issues = extract_unique_issues(feedback_history: feedback_history)
  most_recent = feedback_history.last

  summary_entry = {
    verdict:       'rejected',
    issues:        unique_issues,
    round:         most_recent[:round],
    summarized:    true,
    source_rounds: feedback_history.filter_map { |f| f[:round] }
  }

  [summary_entry]
end