Sha256: 5e72850eb493266fac5fdb66e039a5c71b00d67d3ee2d1700fd2ecf4e7355ee5
Contents?: true
Size: 1.46 KB
Versions: 62
Compression:
Stored size: 1.46 KB
Contents
module Workarea module Insights class ColdProducts < Base class << self def dashboards %w(catalog) end def generate_weekly! median = revenue_change_median standard_deviation = revenue_change_standard_deviation [2, 1, 0].each do |min_deviations| results = find_results( median: median, standard_deviation: standard_deviation, min_deviations: min_deviations ) if results.present? create!(results: results.map(&:as_document)) return end end end def find_results(median:, standard_deviation:, min_deviations:) max_revenue_change = median - (standard_deviation * min_deviations) max_revenue_change = max_revenue_change > 0 ? 0 : max_revenue_change Metrics::ProductByWeek .last_week .where(:revenue_change.lt => max_revenue_change) .order_by(revenue_change: :asc, prior_week_revenue: :desc, _id: :asc) .limit(Workarea.config.insights_products_list_max_results) .to_a end def revenue_change_median Metrics::ProductByWeek.last_week.declined_revenue.revenue_change_median end def revenue_change_standard_deviation Metrics::ProductByWeek.last_week.declined_revenue.revenue_change_standard_deviation end end end end end
Version data entries
62 entries across 62 versions & 1 rubygems