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
|