2019-05-03 06:17:27 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2013-08-03 06:31:25 +08:00
|
|
|
module Jobs
|
2019-10-02 12:01:53 +08:00
|
|
|
class DashboardStats < ::Jobs::Scheduled
|
2014-02-06 07:14:41 +08:00
|
|
|
every 30.minutes
|
2013-08-03 06:31:25 +08:00
|
|
|
|
|
|
|
def execute(args)
|
2021-09-15 06:59:25 +08:00
|
|
|
if persistent_problems?
|
2016-04-09 04:44:04 +08:00
|
|
|
# If there have been problems reported on the dashboard for a while,
|
|
|
|
# send a message to admins no more often than once per week.
|
2021-09-15 06:59:25 +08:00
|
|
|
group_message = GroupMessage.new(Group[:admins].name, :dashboard_problems, limit_once_per: 7.days.to_i)
|
|
|
|
Topic.transaction do
|
|
|
|
group_message.delete_previous!
|
|
|
|
group_message.create
|
|
|
|
end
|
2016-04-09 04:44:04 +08:00
|
|
|
end
|
2013-08-03 06:31:25 +08:00
|
|
|
end
|
2021-09-15 06:59:25 +08:00
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def persistent_problems?
|
|
|
|
problems_started_at = AdminDashboardData.problems_started_at
|
|
|
|
problems_started_at && problems_started_at < 2.days.ago
|
|
|
|
end
|
2013-08-03 06:31:25 +08:00
|
|
|
end
|
2013-09-02 15:14:41 +08:00
|
|
|
end
|