class JiraReporting::SLAReport

Attributes

conn[RW]

Public Class Methods

new() click to toggle source
# File lib/jira_reporting/sla_report.rb, line 8
def initialize
  @conn = Connection.instance
  @debug = true
end
show_report() click to toggle source
# File lib/jira_reporting/sla_report.rb, line 4
def self.show_report
  self.new.show_report
end

Public Instance Methods

custom_fields() click to toggle source
# File lib/jira_reporting/sla_report.rb, line 76
def custom_fields
  @custom_fields ||= Hash[[
    [10812, "Support xt Can't Reproduce"],
    [10808, 'Support xt In Progress'],
    [10809, 'Support xt Not Accepted'],
    [10817, 'Support xt Requester Denied'],
    [10814, 'Support xt Requester Review'],
    [10816, 'Support xt Resolved'],
    [10815, 'Support xt Reverify'],
    [10813, 'Support xt Review'],
    [10810, 'Support xt Triaged'],
    [10811, 'Support xt Verified'],
  ].map{|k,v| ["customfield_#{k}", v]}]
end
find_all(query, offset = 0) click to toggle source
# File lib/jira_reporting/sla_report.rb, line 40
def find_all(query, offset = 0)
  ask = 100
  result = Jiralicious.search(query, start_at: offset, max_results: ask)
  issues = result.issues_raw
  if issues.count == ask && result.num_results > issues.count
    issues += find_all(query, offset + ask)
  end
  # puts "found #{issues.count}"
  issues
end
log(str) click to toggle source
# File lib/jira_reporting/sla_report.rb, line 15
def log(str)
  puts "#{Time.now} #{str}" if @debug
end
prio_report(name, group) click to toggle source
# File lib/jira_reporting/sla_report.rb, line 51
def prio_report(name, group)
  puts "\n#{name}:"

  cur_week = Time.now.to_date.cweek
  week_groups = group.group_by{|t| t.created_at.to_date.cweek }
  wgs = week_groups.to_a.select{|week, set| week >= (cur_week - 27) }
  wgs.sort!{|a,b| a[0] <=> b[0] }

  puts "Week:         #{wgs.map{|w,s| "%12i" % w }.join(" | ")}"

  o = []
  wgs.each do |week, set|
    sla_rate = set.select{|t| t.sla_diff <= 0 }.length.to_f / set.length
    o << "%11.2f%" % (sla_rate*100)
  end
  puts "SLA Hit Rate: #{o.join " | "}"

  o = []
  wgs.each do |week, set|
    over_under = set.map(&:sla_diff).sum
    o << "%12i" % over_under
  end
  puts "Over Under:   #{o.join " | "}"
end
show_report() click to toggle source
# File lib/jira_reporting/sla_report.rb, line 19
def show_report

  log 'querying'
  #query = %q{project = "Tech Support" AND ("Support xt Can't Reproduce" > startOfDay(-7d) OR "Support xt Not Accepted" > startOfDay(-7d) OR "Support xt Resolved" > startOfDay(-7d)) AND status not in ("Not Accepted", "Can't Reproduce")}
  query = %q{
    project = "Tech Support"
    AND status not in ("Not Accepted", "Can't Reproduce")}
  #issues = Jiralicious.search(query).issues_raw
  issues = find_all(query)

  #log 'unmapping custom fields'
  #unmap_custom_fields(issues.first)
  rept = issues.map{|i| ReportIssue.new(i, custom_fields) }
  prios = rept.group_by(&:priority)

  prio_report("P1", prios[:p1])
  prio_report("P2", prios[:p2])
  prio_report("P3", prios[:p3])
  prio_report("P4", prios[:p4])
end