2015-10-20 08:48:43 +00:00
|
|
|
class Report
|
|
|
|
|
|
|
|
def self.config
|
|
|
|
config = {}
|
|
|
|
config[:metric] = {}
|
|
|
|
|
|
|
|
config[:metric][:count] = {
|
|
|
|
name: 'count',
|
|
|
|
display: 'Ticket Count',
|
|
|
|
default: true,
|
|
|
|
prio: 10_000,
|
|
|
|
}
|
|
|
|
backend = [
|
|
|
|
{
|
|
|
|
name: 'created',
|
|
|
|
display: 'Created',
|
|
|
|
selected: true,
|
|
|
|
dataDownload: true,
|
2015-10-29 02:33:36 +00:00
|
|
|
adapter: Report::TicketGenericTime,
|
|
|
|
params: { field: 'created_at' },
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'closed',
|
|
|
|
display: 'Closed',
|
|
|
|
selected: true,
|
|
|
|
dataDownload: true,
|
2015-10-29 02:33:36 +00:00
|
|
|
adapter: Report::TicketGenericTime,
|
|
|
|
params: { field: 'close_time' },
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'backlog',
|
|
|
|
display: 'Backlog',
|
|
|
|
selected: true,
|
|
|
|
dataDownload: false,
|
2015-10-29 09:07:45 +00:00
|
|
|
adapter: Report::TicketBacklog,
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'first_solution',
|
|
|
|
display: 'First Solution',
|
2015-10-29 02:33:36 +00:00
|
|
|
selected: false,
|
2015-10-20 08:48:43 +00:00
|
|
|
dataDownload: true,
|
2015-10-29 02:33:36 +00:00
|
|
|
adapter: Report::TicketFirstSolution,
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
2015-10-29 02:33:36 +00:00
|
|
|
name: 'reopened',
|
2015-10-20 08:48:43 +00:00
|
|
|
display: 'Re-Open',
|
|
|
|
selected: false,
|
|
|
|
dataDownload: true,
|
2015-10-29 02:33:36 +00:00
|
|
|
adapter: Report::TicketReopened,
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'movedin',
|
|
|
|
display: 'Moved in',
|
|
|
|
selected: false,
|
|
|
|
dataDownload: true,
|
2015-10-29 02:33:36 +00:00
|
|
|
adapter: Report::TicketMoved,
|
|
|
|
params: { type: 'in' },
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'movedout',
|
|
|
|
display: 'Moved out',
|
|
|
|
selected: false,
|
|
|
|
dataDownload: true,
|
2015-10-29 02:33:36 +00:00
|
|
|
adapter: Report::TicketMoved,
|
|
|
|
params: { type: 'out' },
|
|
|
|
},
|
|
|
|
#{
|
|
|
|
# name: 'sla_in',
|
|
|
|
# display: 'SLA in',
|
|
|
|
# selected: false,
|
|
|
|
# dataDownload: true,
|
|
|
|
#},
|
|
|
|
#{
|
|
|
|
# name: 'sla_out',
|
|
|
|
# display: 'SLA out',
|
|
|
|
# selected: false,
|
|
|
|
# dataDownload: true,
|
|
|
|
#},
|
2015-10-20 08:48:43 +00:00
|
|
|
]
|
|
|
|
config[:metric][:count][:backend] = backend
|
|
|
|
|
|
|
|
config[:metric][:create_channels] = {
|
|
|
|
name: 'create_channels',
|
|
|
|
display: 'Create Channels',
|
|
|
|
prio: 9000,
|
|
|
|
}
|
|
|
|
backend = [
|
|
|
|
{
|
|
|
|
name: 'phone_in',
|
|
|
|
display: 'Phone (in)',
|
|
|
|
selected: true,
|
|
|
|
dataDownload: true,
|
2015-10-29 02:33:36 +00:00
|
|
|
adapter: Report::TicketGenericTime,
|
|
|
|
params: {
|
|
|
|
field: 'created_at',
|
|
|
|
selector: {
|
|
|
|
'create_article_type_id' => {
|
|
|
|
'operator' => 'is',
|
|
|
|
'value' => Ticket::Article::Type.lookup(name: 'phone').id,
|
|
|
|
},
|
|
|
|
'create_article_sender_id' => {
|
|
|
|
'operator' => 'is',
|
|
|
|
'value' => Ticket::Article::Sender.lookup(name: 'Customer').id,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'phone_out',
|
|
|
|
display: 'Phone (out)',
|
|
|
|
selected: true,
|
|
|
|
dataDownload: true,
|
2015-10-29 02:33:36 +00:00
|
|
|
adapter: Report::TicketGenericTime,
|
|
|
|
params: {
|
|
|
|
field: 'created_at',
|
|
|
|
selector: {
|
|
|
|
'create_article_type_id' => {
|
|
|
|
'operator' => 'is',
|
|
|
|
'value' => Ticket::Article::Type.lookup(name: 'phone').id,
|
|
|
|
},
|
|
|
|
'create_article_sender_id' => {
|
|
|
|
'operator' => 'is',
|
|
|
|
'value' => Ticket::Article::Sender.lookup(name: 'Agent').id,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
},
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'email_in',
|
|
|
|
display: 'Email (in)',
|
|
|
|
selected: true,
|
|
|
|
dataDownload: true,
|
2015-10-29 02:33:36 +00:00
|
|
|
adapter: Report::TicketGenericTime,
|
|
|
|
params: {
|
|
|
|
field: 'created_at',
|
|
|
|
selector: {
|
|
|
|
'create_article_type_id' => {
|
|
|
|
'operator' => 'is',
|
|
|
|
'value' => Ticket::Article::Type.lookup(name: 'email').id,
|
|
|
|
},
|
|
|
|
'create_article_sender_id' => {
|
|
|
|
'operator' => 'is',
|
|
|
|
'value' => Ticket::Article::Sender.lookup(name: 'Customer').id,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'email_out',
|
|
|
|
display: 'Email (out)',
|
|
|
|
selected: true,
|
|
|
|
dataDownload: true,
|
2015-10-29 02:33:36 +00:00
|
|
|
adapter: Report::TicketGenericTime,
|
|
|
|
params: {
|
|
|
|
field: 'created_at',
|
|
|
|
selector: {
|
|
|
|
'create_article_type_id' => {
|
|
|
|
'operator' => 'is',
|
|
|
|
'value' => Ticket::Article::Type.lookup(name: 'email').id,
|
|
|
|
},
|
|
|
|
'create_article_sender_id' => {
|
|
|
|
'operator' => 'is',
|
|
|
|
'value' => Ticket::Article::Sender.lookup(name: 'Agent').id,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'web_in',
|
|
|
|
display: 'Web (in)',
|
|
|
|
selected: true,
|
|
|
|
dataDownload: true,
|
2015-10-29 09:07:45 +00:00
|
|
|
adapter: Report::TicketGenericTime,
|
|
|
|
params: {
|
|
|
|
field: 'created_at',
|
|
|
|
selector: {
|
|
|
|
'create_article_type_id' => {
|
|
|
|
'operator' => 'is',
|
|
|
|
'value' => Ticket::Article::Type.lookup(name: 'web').id,
|
|
|
|
},
|
|
|
|
'create_article_sender_id' => {
|
|
|
|
'operator' => 'is',
|
|
|
|
'value' => Ticket::Article::Sender.lookup(name: 'Customer').id,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'twitter_in',
|
|
|
|
display: 'Twitter (in)',
|
|
|
|
selected: true,
|
|
|
|
dataDownload: true,
|
2015-10-29 09:07:45 +00:00
|
|
|
adapter: Report::TicketGenericTime,
|
|
|
|
params: {
|
|
|
|
field: 'created_at',
|
|
|
|
selector: {
|
|
|
|
'create_article_type_id' => {
|
|
|
|
'operator' => 'is',
|
|
|
|
'value' => Ticket::Article::Type.lookup(name: 'twitter status').id,
|
|
|
|
},
|
|
|
|
'create_article_sender_id' => {
|
|
|
|
'operator' => 'is',
|
|
|
|
'value' => Ticket::Article::Sender.lookup(name: 'Customer').id,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'twitter_out',
|
|
|
|
display: 'Twitter (out)',
|
|
|
|
selected: true,
|
|
|
|
dataDownload: true,
|
|
|
|
adapter: Report::TicketGenericTime,
|
|
|
|
params: {
|
|
|
|
field: 'created_at',
|
|
|
|
selector: {
|
|
|
|
'create_article_type_id' => {
|
|
|
|
'operator' => 'is',
|
|
|
|
'value' => Ticket::Article::Type.lookup(name: 'twitter status').id,
|
|
|
|
},
|
|
|
|
'create_article_sender_id' => {
|
|
|
|
'operator' => 'is',
|
|
|
|
'value' => Ticket::Article::Sender.lookup(name: 'Agent').id,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
]
|
|
|
|
config[:metric][:create_channels][:backend] = backend
|
|
|
|
|
|
|
|
config[:metric][:times] = {
|
|
|
|
name: 'times',
|
|
|
|
display: 'Times',
|
|
|
|
prio: 8000,
|
|
|
|
}
|
|
|
|
backend = [
|
|
|
|
{
|
|
|
|
name: 'first_response_average',
|
|
|
|
display: 'First Response average',
|
|
|
|
selected: true,
|
2015-10-20 12:58:04 +00:00
|
|
|
dataDownload: false,
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'first_response_max',
|
|
|
|
display: 'First Response max',
|
2015-10-20 12:58:04 +00:00
|
|
|
selected: false,
|
2015-10-20 08:48:43 +00:00
|
|
|
dataDownload: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'first_response_min',
|
|
|
|
display: 'First Response min',
|
2015-10-20 12:58:04 +00:00
|
|
|
selected: false,
|
2015-10-20 08:48:43 +00:00
|
|
|
dataDownload: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'solution_time_average',
|
|
|
|
display: 'Solution Time average',
|
|
|
|
selected: true,
|
2015-10-20 12:58:04 +00:00
|
|
|
dataDownload: false,
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'solution_time_max',
|
|
|
|
display: 'Solution Time max',
|
2015-10-20 12:58:04 +00:00
|
|
|
selected: false,
|
2015-10-20 08:48:43 +00:00
|
|
|
dataDownload: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'solution_time_min',
|
|
|
|
display: 'Solution Time min',
|
2015-10-20 12:58:04 +00:00
|
|
|
selected: false,
|
2015-10-20 08:48:43 +00:00
|
|
|
dataDownload: true,
|
|
|
|
},
|
|
|
|
]
|
|
|
|
config[:metric][:times][:backend] = backend
|
|
|
|
|
|
|
|
config[:metric][:communication] = {
|
|
|
|
name: 'communication',
|
|
|
|
display: 'Communication',
|
|
|
|
prio: 7000,
|
|
|
|
}
|
|
|
|
backend = [
|
|
|
|
{
|
|
|
|
name: 'phone_in',
|
|
|
|
display: 'Phone (in)',
|
|
|
|
selected: true,
|
2015-10-20 12:58:04 +00:00
|
|
|
dataDownload: false,
|
2015-10-29 09:07:45 +00:00
|
|
|
adapter: Report::ArticleByTypeSender,
|
|
|
|
params: {
|
|
|
|
type: 'phone',
|
|
|
|
sender: 'Customer',
|
|
|
|
},
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'phone_out',
|
|
|
|
display: 'Phone (out)',
|
|
|
|
selected: true,
|
2015-10-20 12:58:04 +00:00
|
|
|
dataDownload: false,
|
2015-10-29 09:07:45 +00:00
|
|
|
adapter: Report::ArticleByTypeSender,
|
|
|
|
params: {
|
|
|
|
type: 'phone',
|
|
|
|
sender: 'Agent',
|
|
|
|
},
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'email_in',
|
|
|
|
display: 'Email (in)',
|
|
|
|
selected: true,
|
2015-10-20 12:58:04 +00:00
|
|
|
dataDownload: false,
|
2015-10-29 09:07:45 +00:00
|
|
|
adapter: Report::ArticleByTypeSender,
|
|
|
|
params: {
|
|
|
|
type: 'email',
|
|
|
|
sender: 'Customer',
|
|
|
|
},
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'email_out',
|
|
|
|
display: 'Email (out)',
|
|
|
|
selected: true,
|
2015-10-20 12:58:04 +00:00
|
|
|
dataDownload: false,
|
2015-10-29 09:07:45 +00:00
|
|
|
adapter: Report::ArticleByTypeSender,
|
|
|
|
params: {
|
|
|
|
type: 'email',
|
|
|
|
sender: 'Agent',
|
|
|
|
},
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'web_in',
|
|
|
|
display: 'Web (in)',
|
|
|
|
selected: true,
|
2015-10-20 12:58:04 +00:00
|
|
|
dataDownload: false,
|
2015-10-29 09:07:45 +00:00
|
|
|
adapter: Report::ArticleByTypeSender,
|
|
|
|
params: {
|
|
|
|
type: 'web',
|
|
|
|
sender: 'Customer',
|
|
|
|
},
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'twitter_in',
|
|
|
|
display: 'Twitter (in)',
|
|
|
|
selected: true,
|
2015-10-20 12:58:04 +00:00
|
|
|
dataDownload: false,
|
2015-10-29 09:07:45 +00:00
|
|
|
adapter: Report::ArticleByTypeSender,
|
|
|
|
params: {
|
|
|
|
type: 'twitter status',
|
|
|
|
sender: 'Customer',
|
|
|
|
},
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'twitter_out',
|
|
|
|
display: 'Twitter (out)',
|
|
|
|
selected: true,
|
2015-10-20 12:58:04 +00:00
|
|
|
dataDownload: false,
|
2015-10-29 09:07:45 +00:00
|
|
|
adapter: Report::ArticleByTypeSender,
|
|
|
|
params: {
|
|
|
|
type: 'twitter status',
|
|
|
|
sender: 'Agent',
|
|
|
|
},
|
2015-10-20 08:48:43 +00:00
|
|
|
},
|
|
|
|
]
|
|
|
|
config[:metric][:communication][:backend] = backend
|
2015-10-29 09:07:45 +00:00
|
|
|
=begin
|
2015-10-20 08:48:43 +00:00
|
|
|
config[:metric][:sla] = {
|
|
|
|
name: 'sla',
|
|
|
|
display: 'SLAs',
|
|
|
|
prio: 6000,
|
|
|
|
}
|
|
|
|
backend = [
|
|
|
|
{
|
|
|
|
name: 'sla_out_1',
|
|
|
|
display: 'SLA (out) - <1h',
|
2015-10-29 02:33:36 +00:00
|
|
|
selected: false,
|
2015-10-20 08:48:43 +00:00
|
|
|
dataDownload: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'sla_out_2',
|
|
|
|
display: 'SLA (out) - <2h',
|
2015-10-29 02:33:36 +00:00
|
|
|
selected: false,
|
2015-10-20 08:48:43 +00:00
|
|
|
dataDownload: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'sla_out_4',
|
|
|
|
display: 'SLA (out) - <4h',
|
2015-10-29 02:33:36 +00:00
|
|
|
selected: false,
|
2015-10-20 08:48:43 +00:00
|
|
|
dataDownload: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'sla_out_8',
|
|
|
|
display: 'SLA (out) - <8h',
|
|
|
|
selected: true,
|
|
|
|
dataDownload: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'sla_in_1',
|
|
|
|
display: 'SLA (in) - <1h',
|
|
|
|
selected: true,
|
|
|
|
dataDownload: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'sla_in_2',
|
|
|
|
display: 'SLA (in) - <2h',
|
2015-10-29 02:33:36 +00:00
|
|
|
selected: false,
|
2015-10-20 08:48:43 +00:00
|
|
|
dataDownload: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'sla_in_4',
|
|
|
|
display: 'SLA (in) - <4h',
|
2015-10-29 02:33:36 +00:00
|
|
|
selected: false,
|
2015-10-20 08:48:43 +00:00
|
|
|
dataDownload: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'sla_in_8',
|
|
|
|
display: 'SLA (in) - <8h',
|
2015-10-29 02:33:36 +00:00
|
|
|
selected: false,
|
2015-10-20 08:48:43 +00:00
|
|
|
dataDownload: true,
|
|
|
|
},
|
|
|
|
]
|
|
|
|
config[:metric][:sla][:backend] = backend
|
2015-10-29 09:07:45 +00:00
|
|
|
=end
|
2015-10-20 08:48:43 +00:00
|
|
|
config[:metric].each {|metric_key, metric_value|
|
|
|
|
metric_value[:backend].each {|metric_backend|
|
|
|
|
metric_backend[:name] = "#{metric_key}::#{metric_backend[:name]}"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
config
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|