Class: Workarea::Insights::PromisingProducts
- Inherits:
-
Base
- Object
- Base
- Workarea::Insights::PromisingProducts
show all
- Defined in:
- app/models/workarea/insights/promising_products.rb
Class Method Summary
collapse
Methods inherited from Base
beginning_of_last_month, current, end_of_last_month, generate_daily!, generate_monthly!, #include?, #slug
#releasable?
add_worker, assert_valid_config!, async, caching_classes?, disable, enable, inline, #run_callbacks, workers, workers_list
#embedded_children
Class Method Details
.avg_conversion_rate_of_bottom_seven_views_deciles ⇒ Object
26
27
28
|
# File 'app/models/workarea/insights/promising_products.rb', line 26
def avg_conversion_rate_of_bottom_seven_views_deciles
Metrics::ProductByWeek.last_week.by_views_percentile(1..70).avg(:conversion_rate)
end
|
.avg_views_of_bottom_seven_views_deciles ⇒ Object
41
42
43
|
# File 'app/models/workarea/insights/promising_products.rb', line 41
def avg_views_of_bottom_seven_views_deciles
Metrics::ProductByWeek.last_week.by_views_percentile(1..70).avg(:views)
end
|
.dashboards ⇒ Object
5
6
7
|
# File 'app/models/workarea/insights/promising_products.rb', line 5
def dashboards
%w(catalog)
end
|
.first_pass ⇒ Object
15
16
17
18
19
20
21
22
23
24
|
# File 'app/models/workarea/insights/promising_products.rb', line 15
def first_pass
Metrics::ProductByWeek
.last_week
.by_views_percentile(1..70)
.where(:views.gt => 20)
.where(:conversion_rate.gt => avg_conversion_rate_of_bottom_seven_views_deciles)
.order_by(conversion_rate: :desc, views: :desc, _id: :asc)
.limit(Workarea.config.insights_products_list_max_results)
.to_a
end
|
.generate_weekly! ⇒ Object
9
10
11
12
13
|
# File 'app/models/workarea/insights/promising_products.rb', line 9
def generate_weekly!
results = first_pass
results = second_pass if results.blank?
create!(results: results.map(&:as_document)) if results.present?
end
|
.second_pass ⇒ Object
30
31
32
33
34
35
36
37
38
39
|
# File 'app/models/workarea/insights/promising_products.rb', line 30
def second_pass
Metrics::ProductByWeek
.last_week
.by_views_percentile(1..70)
.where(:views.gte => avg_views_of_bottom_seven_views_deciles)
.where(:conversion_rate.gt => avg_conversion_rate_of_bottom_seven_views_deciles)
.order_by(conversion_rate: :desc, views: :desc, _id: :asc)
.limit(Workarea.config.insights_products_list_max_results)
.to_a
end
|