module JiraIssue::SLATracker
Public Instance Methods
approaching_sla_due_time?()
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 90 def approaching_sla_due_time? return false if sla_due_time.nil? || closed? sla_remaining_time < sla_warning_time end
over_sla?()
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 95 def over_sla? case when over_sla == API_OVER_SLA_FIELD_NO false when sla_due_time.nil? false when closed? && sla_closed_at > sla_due_time true when open? && Time.now > sla_due_time true end end
resolution_base()
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 159 def resolution_base if requester_review requester_review elsif resolved resolved elsif cant_reproduce cant_reproduce elsif not_accepted not_accepted else # not resolved nil end end
set_over_sla!(over = nil)
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 11 def set_over_sla!(over = nil) over ||= over_sla? return if over.nil? || over == false jira_issue = jiralicious_issue jira_issue.fields.set_id(OVER_SLA_FIELD, OVER_SLA_FIELD_YES) jira_issue.save! end
set_sla_closed_at!(sla_closed_at = nil)
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 27 def set_sla_closed_at!(sla_closed_at = nil) sla_closed_at ||= closed_at return if sla_closed_at.nil? || open? jira_issue = jiralicious_issue jira_issue.fields.set(SLA_CLOSED_AT_FIELD, sla_closed_at.iso8601) jira_issue.save! end
set_sla_due_time!(due_time = nil)
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 3 def set_sla_due_time!(due_time = nil) due_time ||= sla_target return unless due_time jira_issue = jiralicious_issue jira_issue.fields.set(SLA_DUE_TIME_FIELD, due_time.iso8601) jira_issue.save! end
set_sla_due_warning!(almost_over_sla = nil)
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 19 def set_sla_due_warning!(almost_over_sla = nil) almost_over_sla ||= approaching_sla_due_time? return if almost_over_sla.nil? || almost_over_sla == false jira_issue = jiralicious_issue jira_issue.fields.set_id(SLA_DUE_WARNING_FIELD, SLA_DUE_WARNING_FIELD_SET) jira_issue.save! end
set_total_time_over_sla!(time_over_sla = nil)
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 35 def set_total_time_over_sla!(time_over_sla = nil) time_over_sla ||= sum_total_time_over_sla return unless over_sla == API_OVER_SLA_FIELD_YES || closed? || time_over_sla.present? jira_issue = jiralicious_issue jira_issue.fields.set(TOTAL_TIME_OVER_SLA_FIELD, time_over_sla) jira_issue.save! end
sla_base()
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 43 def sla_base created_at end
sla_diff(now = Time.now)
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 116 def sla_diff(now = Time.now) t = sla_target b = resolution_base if t && b b - t elsif t now - t else 0 end end
sla_remaining_time()
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 82 def sla_remaining_time sla_due_time - Time.now end
sla_target()
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 47 def sla_target case priority when :p1 sla_base + 2.hours when :p2 sla_base + 24.hours when :p3 if sla_base <= FIVE_P_DATE 5.business_days.after(sla_base) else 3.business_days.after(sla_base) end when :p4 if sla_base <= FIVE_P_DATE nil else 5.business_days.after(sla_base).change(:hour => BusinessTime::Config.end_of_workday.hour) end else nil end end
sla_time_ratio(from = Time.now)
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 70 def sla_time_ratio(from = Time.now) return 0 if priority == :p5 from = closed_at if closed? available_time = sla_target - sla_base used_time = from - sla_base used_time.to_f / available_time end
sla_total_available_time()
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 78 def sla_total_available_time sla_due_time - sla_base end
sla_warning_time()
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 86 def sla_warning_time sla_total_available_time*0.20 end
sum_total_time_over_sla()
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 108 def sum_total_time_over_sla # => difference in hours if over_sla == API_OVER_SLA_FIELD_YES ((sla_closed_at - sla_due_time) / 60) / 60 else 0 end end
time_to_finish_work()
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 144 def time_to_finish_work if in_progress if pr_review pr_review - in_progress elsif requester_review requester_review - in_progress end else nil #elsif resolved # # wtf? # resolved - created_at end end
time_to_start_work()
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 128 def time_to_start_work if verified if in_progress in_progress - verified else Time.now - verified end elsif triaged && in_progress in_progress - triaged elsif in_progress in_progress - created else nil end end
total_time_to_resolution()
click to toggle source
# File lib/jira_reporting/sla_tracker.rb, line 174 def total_time_to_resolution b = resolution_base if b resolution_base - created_at else nil end end