Class: CompletionKit::MetricSuggestionJob

Inherits:
ApplicationJob
  • Object
show all
Defined in:
app/jobs/completion_kit/metric_suggestion_job.rb

Instance Method Summary collapse

Instance Method Details

#perform(metric_id) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/jobs/completion_kit/metric_suggestion_job.rb', line 15

def perform(metric_id)
  @metric = Metric.find_by(id: metric_id)
  return unless @metric

  MetricVersion.drafts.where(metric_id: @metric.id, source: "suggestion").destroy_all

  generator = MetricVariantGenerator.new(@metric, count: 1)
  variants = generator.call
  if variants.empty?
    broadcast_status(@metric, partial: "completion_kit/metrics/suggestion_failed", locals: { metric: @metric })
    return
  end

  draft = generator.persist!(variants).max_by(&:version_number)
  summary = MetricImprovementValidator.new(@metric, draft).call
  draft.update!(validation_summary: summary)

  broadcast_status(@metric, partial: "completion_kit/metrics/suggestion_ready", locals: { metric: @metric, draft: draft })
end