report.rb 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. class Report
  2. def self.config
  3. config = {}
  4. config[:metric] = {}
  5. config[:metric][:count] = {
  6. name: 'count',
  7. display: 'Ticket Count',
  8. default: true,
  9. prio: 10_000,
  10. }
  11. backend = [
  12. {
  13. name: 'created',
  14. display: 'Created',
  15. selected: true,
  16. dataDownload: true,
  17. adapter: Report::TicketGenericTime,
  18. params: { field: 'created_at' },
  19. },
  20. {
  21. name: 'closed',
  22. display: 'Closed',
  23. selected: true,
  24. dataDownload: true,
  25. adapter: Report::TicketGenericTime,
  26. params: { field: 'close_time' },
  27. },
  28. {
  29. name: 'backlog',
  30. display: 'Backlog',
  31. selected: true,
  32. dataDownload: false,
  33. },
  34. {
  35. name: 'first_solution',
  36. display: 'First Solution',
  37. selected: false,
  38. dataDownload: true,
  39. adapter: Report::TicketFirstSolution,
  40. },
  41. {
  42. name: 'reopened',
  43. display: 'Re-Open',
  44. selected: false,
  45. dataDownload: true,
  46. adapter: Report::TicketReopened,
  47. },
  48. {
  49. name: 'movedin',
  50. display: 'Moved in',
  51. selected: false,
  52. dataDownload: true,
  53. adapter: Report::TicketMoved,
  54. params: { type: 'in' },
  55. },
  56. {
  57. name: 'movedout',
  58. display: 'Moved out',
  59. selected: false,
  60. dataDownload: true,
  61. adapter: Report::TicketMoved,
  62. params: { type: 'out' },
  63. },
  64. #{
  65. # name: 'sla_in',
  66. # display: 'SLA in',
  67. # selected: false,
  68. # dataDownload: true,
  69. #},
  70. #{
  71. # name: 'sla_out',
  72. # display: 'SLA out',
  73. # selected: false,
  74. # dataDownload: true,
  75. #},
  76. ]
  77. config[:metric][:count][:backend] = backend
  78. config[:metric][:create_channels] = {
  79. name: 'create_channels',
  80. display: 'Create Channels',
  81. prio: 9000,
  82. }
  83. backend = [
  84. {
  85. name: 'phone_in',
  86. display: 'Phone (in)',
  87. selected: true,
  88. dataDownload: true,
  89. adapter: Report::TicketGenericTime,
  90. params: {
  91. field: 'created_at',
  92. selector: {
  93. 'create_article_type_id' => {
  94. 'operator' => 'is',
  95. 'value' => Ticket::Article::Type.lookup(name: 'phone').id,
  96. },
  97. 'create_article_sender_id' => {
  98. 'operator' => 'is',
  99. 'value' => Ticket::Article::Sender.lookup(name: 'Customer').id,
  100. },
  101. },
  102. },
  103. },
  104. {
  105. name: 'phone_out',
  106. display: 'Phone (out)',
  107. selected: true,
  108. dataDownload: true,
  109. adapter: Report::TicketGenericTime,
  110. params: {
  111. field: 'created_at',
  112. selector: {
  113. 'create_article_type_id' => {
  114. 'operator' => 'is',
  115. 'value' => Ticket::Article::Type.lookup(name: 'phone').id,
  116. },
  117. 'create_article_sender_id' => {
  118. 'operator' => 'is',
  119. 'value' => Ticket::Article::Sender.lookup(name: 'Agent').id,
  120. },
  121. }
  122. },
  123. },
  124. {
  125. name: 'email_in',
  126. display: 'Email (in)',
  127. selected: true,
  128. dataDownload: true,
  129. adapter: Report::TicketGenericTime,
  130. params: {
  131. field: 'created_at',
  132. selector: {
  133. 'create_article_type_id' => {
  134. 'operator' => 'is',
  135. 'value' => Ticket::Article::Type.lookup(name: 'email').id,
  136. },
  137. 'create_article_sender_id' => {
  138. 'operator' => 'is',
  139. 'value' => Ticket::Article::Sender.lookup(name: 'Customer').id,
  140. },
  141. },
  142. },
  143. },
  144. {
  145. name: 'email_out',
  146. display: 'Email (out)',
  147. selected: true,
  148. dataDownload: true,
  149. adapter: Report::TicketGenericTime,
  150. params: {
  151. field: 'created_at',
  152. selector: {
  153. 'create_article_type_id' => {
  154. 'operator' => 'is',
  155. 'value' => Ticket::Article::Type.lookup(name: 'email').id,
  156. },
  157. 'create_article_sender_id' => {
  158. 'operator' => 'is',
  159. 'value' => Ticket::Article::Sender.lookup(name: 'Agent').id,
  160. },
  161. },
  162. },
  163. },
  164. {
  165. name: 'web_in',
  166. display: 'Web (in)',
  167. selected: true,
  168. dataDownload: true,
  169. },
  170. {
  171. name: 'twitter_in',
  172. display: 'Twitter (in)',
  173. selected: true,
  174. dataDownload: true,
  175. },
  176. ]
  177. config[:metric][:create_channels][:backend] = backend
  178. config[:metric][:times] = {
  179. name: 'times',
  180. display: 'Times',
  181. prio: 8000,
  182. }
  183. backend = [
  184. {
  185. name: 'first_response_average',
  186. display: 'First Response average',
  187. selected: true,
  188. dataDownload: false,
  189. },
  190. {
  191. name: 'first_response_max',
  192. display: 'First Response max',
  193. selected: false,
  194. dataDownload: true,
  195. },
  196. {
  197. name: 'first_response_min',
  198. display: 'First Response min',
  199. selected: false,
  200. dataDownload: true,
  201. },
  202. {
  203. name: 'solution_time_average',
  204. display: 'Solution Time average',
  205. selected: true,
  206. dataDownload: false,
  207. },
  208. {
  209. name: 'solution_time_max',
  210. display: 'Solution Time max',
  211. selected: false,
  212. dataDownload: true,
  213. },
  214. {
  215. name: 'solution_time_min',
  216. display: 'Solution Time min',
  217. selected: false,
  218. dataDownload: true,
  219. },
  220. ]
  221. config[:metric][:times][:backend] = backend
  222. config[:metric][:communication] = {
  223. name: 'communication',
  224. display: 'Communication',
  225. prio: 7000,
  226. }
  227. backend = [
  228. {
  229. name: 'phone_in',
  230. display: 'Phone (in)',
  231. selected: true,
  232. dataDownload: false,
  233. },
  234. {
  235. name: 'phone_out',
  236. display: 'Phone (out)',
  237. selected: true,
  238. dataDownload: false,
  239. },
  240. {
  241. name: 'email_in',
  242. display: 'Email (in)',
  243. selected: true,
  244. dataDownload: false,
  245. },
  246. {
  247. name: 'email_out',
  248. display: 'Email (out)',
  249. selected: true,
  250. dataDownload: false,
  251. },
  252. {
  253. name: 'web_in',
  254. display: 'Web (in)',
  255. selected: true,
  256. dataDownload: false,
  257. },
  258. {
  259. name: 'twitter_in',
  260. display: 'Twitter (in)',
  261. selected: true,
  262. dataDownload: false,
  263. },
  264. {
  265. name: 'twitter_out',
  266. display: 'Twitter (out)',
  267. selected: true,
  268. dataDownload: false,
  269. },
  270. ]
  271. config[:metric][:communication][:backend] = backend
  272. config[:metric][:sla] = {
  273. name: 'sla',
  274. display: 'SLAs',
  275. prio: 6000,
  276. }
  277. backend = [
  278. {
  279. name: 'sla_out_1',
  280. display: 'SLA (out) - <1h',
  281. selected: false,
  282. dataDownload: true,
  283. },
  284. {
  285. name: 'sla_out_2',
  286. display: 'SLA (out) - <2h',
  287. selected: false,
  288. dataDownload: true,
  289. },
  290. {
  291. name: 'sla_out_4',
  292. display: 'SLA (out) - <4h',
  293. selected: false,
  294. dataDownload: true,
  295. },
  296. {
  297. name: 'sla_out_8',
  298. display: 'SLA (out) - <8h',
  299. selected: true,
  300. dataDownload: true,
  301. },
  302. {
  303. name: 'sla_in_1',
  304. display: 'SLA (in) - <1h',
  305. selected: true,
  306. dataDownload: true,
  307. },
  308. {
  309. name: 'sla_in_2',
  310. display: 'SLA (in) - <2h',
  311. selected: false,
  312. dataDownload: true,
  313. },
  314. {
  315. name: 'sla_in_4',
  316. display: 'SLA (in) - <4h',
  317. selected: false,
  318. dataDownload: true,
  319. },
  320. {
  321. name: 'sla_in_8',
  322. display: 'SLA (in) - <8h',
  323. selected: false,
  324. dataDownload: true,
  325. },
  326. ]
  327. config[:metric][:sla][:backend] = backend
  328. config[:metric].each {|metric_key, metric_value|
  329. metric_value[:backend].each {|metric_backend|
  330. metric_backend[:name] = "#{metric_key}::#{metric_backend[:name]}"
  331. }
  332. }
  333. config
  334. end
  335. end