Sha256: e01c44700fdafaf5e27c739ceafdc060533a42824fe7d62b68a6a68fa10a1b20

Contents?: true

Size: 1.46 KB

Versions: 62

Compression:

Stored size: 1.46 KB

Contents

module Workarea
  module Insights
    class HotProducts < 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:)
          min_revenue_change = median + (standard_deviation * min_deviations)
          min_revenue_change = min_revenue_change < 0 ? 0 : min_revenue_change

          Metrics::ProductByWeek
            .last_week
            .where(:revenue_change.gt => min_revenue_change)
            .order_by(revenue_change: :desc, 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.improved_revenue.revenue_change_median
        end

        def revenue_change_standard_deviation
          Metrics::ProductByWeek.last_week.improved_revenue.revenue_change_standard_deviation
        end
      end
    end
  end
end

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
workarea-core-3.5.27 app/models/workarea/insights/hot_products.rb
workarea-core-3.5.26 app/models/workarea/insights/hot_products.rb
workarea-core-3.4.45 app/models/workarea/insights/hot_products.rb
workarea-core-3.5.25 app/models/workarea/insights/hot_products.rb
workarea-core-3.5.23 app/models/workarea/insights/hot_products.rb
workarea-core-3.4.44 app/models/workarea/insights/hot_products.rb
workarea-core-3.5.22 app/models/workarea/insights/hot_products.rb
workarea-core-3.4.43 app/models/workarea/insights/hot_products.rb
workarea-core-3.5.21 app/models/workarea/insights/hot_products.rb
workarea-core-3.4.42 app/models/workarea/insights/hot_products.rb
workarea-core-3.5.20 app/models/workarea/insights/hot_products.rb
workarea-core-3.4.41 app/models/workarea/insights/hot_products.rb
workarea-core-3.5.19 app/models/workarea/insights/hot_products.rb
workarea-core-3.4.40 app/models/workarea/insights/hot_products.rb
workarea-core-3.5.18 app/models/workarea/insights/hot_products.rb
workarea-core-3.4.39 app/models/workarea/insights/hot_products.rb
workarea-core-3.5.17 app/models/workarea/insights/hot_products.rb
workarea-core-3.4.38 app/models/workarea/insights/hot_products.rb
workarea-core-3.5.16 app/models/workarea/insights/hot_products.rb
workarea-core-3.4.37 app/models/workarea/insights/hot_products.rb