mirror of
https://github.com/discourse/discourse.git
synced 2025-06-06 13:06:56 +08:00
inactive users report is not used anymore
This commit is contained in:
@ -148,21 +148,6 @@ class Report
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.report_inactive_users(report)
|
|
||||||
report.data = []
|
|
||||||
|
|
||||||
data = User.real.count_by_inactivity(report.start_date, report.end_date)
|
|
||||||
|
|
||||||
data.each do |data_point|
|
|
||||||
report.data << { x: data_point["date"], y: data_point["count"] }
|
|
||||||
end
|
|
||||||
|
|
||||||
unless report.data.blank?
|
|
||||||
report.prev30Days = report.data.first[:y]
|
|
||||||
report.total = report.data.last[:y]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.report_new_contributors(report)
|
def self.report_new_contributors(report)
|
||||||
report.data = []
|
report.data = []
|
||||||
|
|
||||||
|
@ -835,51 +835,6 @@ class User < ActiveRecord::Base
|
|||||||
(tl_badge + other_badges).take(limit)
|
(tl_badge + other_badges).take(limit)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.count_by_inactivity(start_date, end_date)
|
|
||||||
aggregation_unit = aggregation_unit_for_period(start_date, end_date)
|
|
||||||
|
|
||||||
sql = <<~SQL
|
|
||||||
SELECT
|
|
||||||
date_trunc('#{aggregation_unit}', generated_date) :: DATE AS "date",
|
|
||||||
max("count") AS "count"
|
|
||||||
FROM (
|
|
||||||
SELECT
|
|
||||||
d.generated_date,
|
|
||||||
COUNT(1) AS "count"
|
|
||||||
FROM (SELECT generate_series(:start_date, :end_date, '1 day' :: INTERVAL) :: DATE AS generated_date) d
|
|
||||||
JOIN users u ON (u.created_at :: DATE <= d.generated_date)
|
|
||||||
WHERE u.active AND
|
|
||||||
u.id > 0 AND
|
|
||||||
NOT EXISTS(
|
|
||||||
SELECT 1
|
|
||||||
FROM user_custom_fields ucf
|
|
||||||
WHERE
|
|
||||||
ucf.user_id = u.id AND
|
|
||||||
ucf.name = 'master_id' AND
|
|
||||||
ucf.value :: int > 0
|
|
||||||
) AND
|
|
||||||
NOT EXISTS(
|
|
||||||
SELECT 1
|
|
||||||
FROM user_visits v
|
|
||||||
WHERE v.visited_at BETWEEN (d.generated_date - INTERVAL '89 days') :: DATE AND d.generated_date
|
|
||||||
AND v.user_id = u.id
|
|
||||||
) AND
|
|
||||||
NOT EXISTS(
|
|
||||||
SELECT 1
|
|
||||||
FROM incoming_emails e
|
|
||||||
WHERE e.user_id = u.id AND
|
|
||||||
e.post_id IS NOT NULL AND
|
|
||||||
e.created_at :: DATE BETWEEN (d.generated_date - INTERVAL '89 days') :: DATE AND d.generated_date
|
|
||||||
)
|
|
||||||
GROUP BY d.generated_date
|
|
||||||
) AS x
|
|
||||||
GROUP BY date_trunc('#{aggregation_unit}', generated_date) :: DATE
|
|
||||||
ORDER BY date_trunc('#{aggregation_unit}', generated_date) :: DATE
|
|
||||||
SQL
|
|
||||||
|
|
||||||
exec_sql(sql, start_date: start_date, end_date: end_date).to_a
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.count_by_signup_date(start_date = nil, end_date = nil, group_id = nil)
|
def self.count_by_signup_date(start_date = nil, end_date = nil, group_id = nil)
|
||||||
result = self
|
result = self
|
||||||
|
|
||||||
|
@ -852,11 +852,6 @@ en:
|
|||||||
xaxis: "Day"
|
xaxis: "Day"
|
||||||
yaxis: "Number of new contributors"
|
yaxis: "Number of new contributors"
|
||||||
description: "Number of users who made their first post during this period"
|
description: "Number of users who made their first post during this period"
|
||||||
inactive_users:
|
|
||||||
title: "Inactive Users"
|
|
||||||
xaxis: "Day"
|
|
||||||
yaxis: "Number of new inactive users"
|
|
||||||
description: "Number of users that haven’t logged on for the last 3 months"
|
|
||||||
dau_by_mau:
|
dau_by_mau:
|
||||||
title: "DAU/MAU"
|
title: "DAU/MAU"
|
||||||
xaxis: "Day"
|
xaxis: "Day"
|
||||||
|
@ -767,11 +767,6 @@ fr:
|
|||||||
xaxis: "Jour"
|
xaxis: "Jour"
|
||||||
yaxis: "Nombre de nouveaux contributeurs"
|
yaxis: "Nombre de nouveaux contributeurs"
|
||||||
description: "Nombre d'utilisateurs qui ont fait leur première contribution durant cette période"
|
description: "Nombre d'utilisateurs qui ont fait leur première contribution durant cette période"
|
||||||
inactive_users:
|
|
||||||
title: "Utilisateurs inactifs"
|
|
||||||
xaxis: "Jour"
|
|
||||||
yaxis: "Nombre de nouveaux utilisateurs inactifs"
|
|
||||||
description: "Nombre d'utilisateurs ne s'étant pas connectés dans les derniers 3 mois"
|
|
||||||
dau_by_mau:
|
dau_by_mau:
|
||||||
title: "DAU/MAU"
|
title: "DAU/MAU"
|
||||||
xaxis: "Jour"
|
xaxis: "Jour"
|
||||||
|
@ -435,57 +435,4 @@ describe Report do
|
|||||||
expect(r.data[0][:y]).to eq(1)
|
expect(r.data[0][:y]).to eq(1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "inactive users" do
|
|
||||||
context "no activity" do
|
|
||||||
it "returns an empty report" do
|
|
||||||
report = Report.find('inactive_users')
|
|
||||||
expect(report.data).to be_blank
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "with different users/visits" do
|
|
||||||
before do
|
|
||||||
freeze_time
|
|
||||||
|
|
||||||
@arpit = Fabricate(:user, created_at: 200.days.ago)
|
|
||||||
@sam = Fabricate(:user, created_at: 200.days.ago)
|
|
||||||
@robin = Fabricate(:user, created_at: 200.days.ago)
|
|
||||||
@michael = Fabricate(:user, created_at: 200.days.ago)
|
|
||||||
@gerhard = Fabricate(:user, created_at: 200.days.ago)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "returns all users as inactive" do
|
|
||||||
report = Report.find('inactive_users')
|
|
||||||
expect(report.data.first[:y]).to eq(5)
|
|
||||||
expect(report.data.last[:y]).to eq(5)
|
|
||||||
end
|
|
||||||
|
|
||||||
it "correctly returns inactive users" do
|
|
||||||
@arpit.user_visits.create(visited_at: 100.days.ago)
|
|
||||||
@sam.user_visits.create(visited_at: 100.days.ago)
|
|
||||||
report = Report.find('inactive_users')
|
|
||||||
expect(report.data.first[:y]).to eq(3)
|
|
||||||
expect(report.data.last[:y]).to eq(5)
|
|
||||||
expect(report.prev30Days).to eq(3)
|
|
||||||
expect(report.total).to eq(5)
|
|
||||||
|
|
||||||
@arpit.user_visits.create(visited_at: 80.days.ago)
|
|
||||||
report = Report.find('inactive_users')
|
|
||||||
expect(report.data.first[:y]).to eq(3)
|
|
||||||
expect(report.data.last[:y]).to eq(4)
|
|
||||||
|
|
||||||
@sam.user_visits.create(visited_at: 55.days.ago)
|
|
||||||
@robin.user_visits.create(visited_at: 50.days.ago)
|
|
||||||
report = Report.find('inactive_users')
|
|
||||||
expect(report.data.first[:y]).to eq(2)
|
|
||||||
expect(report.data.last[:y]).to eq(2)
|
|
||||||
|
|
||||||
Fabricate(:incoming_email, user: @michael, created_at: 20.days.ago, post: Fabricate(:post, user: @michael))
|
|
||||||
report = Report.find('inactive_users')
|
|
||||||
expect(report.data.first[:y]).to eq(2)
|
|
||||||
expect(report.data.last[:y]).to eq(1)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
export default {
|
|
||||||
"/admin/reports/inactive_users": {
|
|
||||||
"report": {
|
|
||||||
"type": "inactive_users",
|
|
||||||
"title": "Inactive Users",
|
|
||||||
"xaxis": "Day",
|
|
||||||
"yaxis": "Number of new inactive users",
|
|
||||||
"description": "Number of users that haven’t logged on for the last 3 months",
|
|
||||||
"data": null,
|
|
||||||
"total": null,
|
|
||||||
"start_date": "2018-04-26",
|
|
||||||
"end_date": "2018-05-03",
|
|
||||||
"category_id": null,
|
|
||||||
"group_id": null,
|
|
||||||
"prev30Days": null,
|
|
||||||
"labels": null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
Reference in New Issue
Block a user