clarion-shared-types 1.0.112 → 1.0.113

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -115,6 +115,9 @@ var PermissionActions;
115
115
  PermissionActions["MANAGE_SUPPORT_SLA"] = "manage:support-sla";
116
116
  PermissionActions["MANAGE_SUPPORT_CONFIGURATION"] = "manage:support-configuration";
117
117
  PermissionActions["READ_SUPPORT_REPORT"] = "read:support-report";
118
+ // Support Analytics: how the desk did over a period - totals only. Held by
119
+ // exactly the roles that read the support reports.
120
+ PermissionActions["READ_SUPPORT_ANALYTICS"] = "read:support-analytics";
118
121
  PermissionActions["READ_SUPPORT_SYNC"] = "read:support-sync";
119
122
  PermissionActions["MANAGE_SUPPORT_SYNC"] = "manage:support-sync";
120
123
  // Module: Notification
@@ -1 +1 @@
1
- {"version":3,"file":"permission-actions.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permission-actions.enum.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permission-actions.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permission-actions.enum.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ __exportStar(require("./interfaces/customer-feedback.dto"), exports);
22
22
  __exportStar(require("./interfaces/support-configuration.dto"), exports);
23
23
  __exportStar(require("./interfaces/support-sync.dto"), exports);
24
24
  __exportStar(require("./interfaces/support-reports.dto"), exports);
25
+ __exportStar(require("./interfaces/support-analytics"), exports);
25
26
  // Utilities
26
27
  __exportStar(require("./utils/support-display.util"), exports);
27
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/support/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,wDAAsC;AAEtC,oBAAoB;AACpB,kEAAgD;AAChD,qEAAmD;AACnD,yEAAuD;AACvD,gEAA8C;AAC9C,mEAAiD;AAEjD,YAAY;AACZ,+DAA6C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/support/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,wDAAsC;AAEtC,oBAAoB;AACpB,kEAAgD;AAChD,qEAAmD;AACnD,yEAAuD;AACvD,gEAA8C;AAC9C,mEAAiD;AACjD,iEAA+C;AAE/C,YAAY;AACZ,+DAA6C"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * Support analytics (the admin's Support Analytics): how the support desk did over a
4
+ * period - tickets raised and settled, how quickly they were answered and resolved,
5
+ * the SLA, what customers asked about, the agents, what customers thought of the
6
+ * help they got, the feedback they left, and whether the helpdesk mirror kept up.
7
+ *
8
+ * One read, computed by clarion-support from one consistent snapshot, so every number
9
+ * on a dashboard agrees with every other. Counts, rates and durations only: never a
10
+ * customer's name, a subject or a message. The only people named are AGENTS, as on
11
+ * the desk's own team report.
12
+ *
13
+ * DURATIONS ARE IN SECONDS, like every analytics contract (the support REPORTS use
14
+ * minutes; this is a separate contract). They are calendar time - an SLA measured in
15
+ * business hours can be met while the calendar duration looks long.
16
+ *
17
+ * How it is counted:
18
+ * - A ticket is RAISED when created. It is RESOLVED, CLOSED, REOPENED or CANCELLED
19
+ * when its status history says it moved there - a reopen clears the ticket's own
20
+ * resolvedAt, so the history is the only record of the earlier resolution.
21
+ * - Time to resolve runs from raising to the FIRST time the ticket was resolved or
22
+ * closed, for tickets first settled in the period: it measures the original
23
+ * request and does not move when a ticket is reopened.
24
+ * - SLA compliance counts SETTLED clocks only (met or breached); a running clock is
25
+ * neither. Breach alerts are the monitor's breach events in the period - a ticket
26
+ * whose deadline later moved (waiting on the customer, a reopen) can be breached
27
+ * once and still end up met.
28
+ */
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ //# sourceMappingURL=support-analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support-analytics.js","sourceRoot":"","sources":["../../../../../src/modules/support/interfaces/support-analytics.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG"}
@@ -112,6 +112,9 @@ export var PermissionActions;
112
112
  PermissionActions["MANAGE_SUPPORT_SLA"] = "manage:support-sla";
113
113
  PermissionActions["MANAGE_SUPPORT_CONFIGURATION"] = "manage:support-configuration";
114
114
  PermissionActions["READ_SUPPORT_REPORT"] = "read:support-report";
115
+ // Support Analytics: how the desk did over a period - totals only. Held by
116
+ // exactly the roles that read the support reports.
117
+ PermissionActions["READ_SUPPORT_ANALYTICS"] = "read:support-analytics";
115
118
  PermissionActions["READ_SUPPORT_SYNC"] = "read:support-sync";
116
119
  PermissionActions["MANAGE_SUPPORT_SYNC"] = "manage:support-sync";
117
120
  // Module: Notification
@@ -1 +1 @@
1
- {"version":3,"file":"permission-actions.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permission-actions.enum.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permission-actions.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permission-actions.enum.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export * from './interfaces/customer-feedback.dto';
6
6
  export * from './interfaces/support-configuration.dto';
7
7
  export * from './interfaces/support-sync.dto';
8
8
  export * from './interfaces/support-reports.dto';
9
+ export * from './interfaces/support-analytics';
9
10
  // Utilities
10
11
  export * from './utils/support-display.util';
11
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/support/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,uBAAuB,CAAC;AAEtC,oBAAoB;AACpB,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AAEjD,YAAY;AACZ,cAAc,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/support/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,uBAAuB,CAAC;AAEtC,oBAAoB;AACpB,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAE/C,YAAY;AACZ,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Support analytics (the admin's Support Analytics): how the support desk did over a
3
+ * period - tickets raised and settled, how quickly they were answered and resolved,
4
+ * the SLA, what customers asked about, the agents, what customers thought of the
5
+ * help they got, the feedback they left, and whether the helpdesk mirror kept up.
6
+ *
7
+ * One read, computed by clarion-support from one consistent snapshot, so every number
8
+ * on a dashboard agrees with every other. Counts, rates and durations only: never a
9
+ * customer's name, a subject or a message. The only people named are AGENTS, as on
10
+ * the desk's own team report.
11
+ *
12
+ * DURATIONS ARE IN SECONDS, like every analytics contract (the support REPORTS use
13
+ * minutes; this is a separate contract). They are calendar time - an SLA measured in
14
+ * business hours can be met while the calendar duration looks long.
15
+ *
16
+ * How it is counted:
17
+ * - A ticket is RAISED when created. It is RESOLVED, CLOSED, REOPENED or CANCELLED
18
+ * when its status history says it moved there - a reopen clears the ticket's own
19
+ * resolvedAt, so the history is the only record of the earlier resolution.
20
+ * - Time to resolve runs from raising to the FIRST time the ticket was resolved or
21
+ * closed, for tickets first settled in the period: it measures the original
22
+ * request and does not move when a ticket is reopened.
23
+ * - SLA compliance counts SETTLED clocks only (met or breached); a running clock is
24
+ * neither. Breach alerts are the monitor's breach events in the period - a ticket
25
+ * whose deadline later moved (waiting on the customer, a reopen) can be breached
26
+ * once and still end up met.
27
+ */
28
+ export {};
29
+ //# sourceMappingURL=support-analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support-analytics.js","sourceRoot":"","sources":["../../../../../src/modules/support/interfaces/support-analytics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG"}
@@ -82,6 +82,7 @@ export declare enum PermissionActions {
82
82
  MANAGE_SUPPORT_SLA = "manage:support-sla",
83
83
  MANAGE_SUPPORT_CONFIGURATION = "manage:support-configuration",
84
84
  READ_SUPPORT_REPORT = "read:support-report",
85
+ READ_SUPPORT_ANALYTICS = "read:support-analytics",
85
86
  READ_SUPPORT_SYNC = "read:support-sync",
86
87
  MANAGE_SUPPORT_SYNC = "manage:support-sync",
87
88
  READ_NOTIFICATION_BRANDING = "read:notification-branding",
@@ -4,4 +4,5 @@ export * from './interfaces/customer-feedback.dto';
4
4
  export * from './interfaces/support-configuration.dto';
5
5
  export * from './interfaces/support-sync.dto';
6
6
  export * from './interfaces/support-reports.dto';
7
+ export * from './interfaces/support-analytics';
7
8
  export * from './utils/support-display.util';
@@ -0,0 +1,390 @@
1
+ /**
2
+ * Support analytics (the admin's Support Analytics): how the support desk did over a
3
+ * period - tickets raised and settled, how quickly they were answered and resolved,
4
+ * the SLA, what customers asked about, the agents, what customers thought of the
5
+ * help they got, the feedback they left, and whether the helpdesk mirror kept up.
6
+ *
7
+ * One read, computed by clarion-support from one consistent snapshot, so every number
8
+ * on a dashboard agrees with every other. Counts, rates and durations only: never a
9
+ * customer's name, a subject or a message. The only people named are AGENTS, as on
10
+ * the desk's own team report.
11
+ *
12
+ * DURATIONS ARE IN SECONDS, like every analytics contract (the support REPORTS use
13
+ * minutes; this is a separate contract). They are calendar time - an SLA measured in
14
+ * business hours can be met while the calendar duration looks long.
15
+ *
16
+ * How it is counted:
17
+ * - A ticket is RAISED when created. It is RESOLVED, CLOSED, REOPENED or CANCELLED
18
+ * when its status history says it moved there - a reopen clears the ticket's own
19
+ * resolvedAt, so the history is the only record of the earlier resolution.
20
+ * - Time to resolve runs from raising to the FIRST time the ticket was resolved or
21
+ * closed, for tickets first settled in the period: it measures the original
22
+ * request and does not move when a ticket is reopened.
23
+ * - SLA compliance counts SETTLED clocks only (met or breached); a running clock is
24
+ * neither. Breach alerts are the monitor's breach events in the period - a ticket
25
+ * whose deadline later moved (waiting on the customer, a reopen) can be breached
26
+ * once and still end up met.
27
+ */
28
+ /** How the period is cut into points for the charts. Chosen by the service from the length of the period. */
29
+ export type SupportAnalyticsBucket = 'hour' | 'day' | 'week' | 'month';
30
+ export interface SupportAnalyticsRange {
31
+ /** Inclusive, ISO 8601. The first ticket or feedback when the period asked for was "forever". */
32
+ from: string;
33
+ /** Exclusive, ISO 8601. */
34
+ to: string;
35
+ bucket: SupportAnalyticsBucket;
36
+ /** IANA time zone the buckets and the hour-of-week grid are cut in. */
37
+ timeZone: string;
38
+ }
39
+ /** A count by a key (a status, a channel, a reason), largest first unless the section says otherwise. */
40
+ export interface SupportAnalyticsCount<K extends string = string> {
41
+ key: K;
42
+ count: number;
43
+ }
44
+ /** Median and 90th percentile of one duration, in seconds; null when nothing was measured. */
45
+ export interface SupportAnalyticsDuration {
46
+ median: number | null;
47
+ p90: number | null;
48
+ /** How many were measured. */
49
+ count: number;
50
+ }
51
+ /** A configured thing tickets are grouped by - a category, a queue, a team - and how its tickets went. */
52
+ export interface SupportAnalyticsGroupRow {
53
+ /** The category, queue or team id; null for tickets with none. */
54
+ id: string | null;
55
+ name: string | null;
56
+ /** Raised in the period. */
57
+ raised: number;
58
+ /** First settled (resolved or closed) in the period. */
59
+ resolved: number;
60
+ /** Open now, whenever raised. */
61
+ openNow: number;
62
+ medianSecondsToFirstResponse: number | null;
63
+ medianSecondsToResolve: number | null;
64
+ /** Raised in the period with a breached clock. */
65
+ breached: number;
66
+ }
67
+ /** Tickets: what came in, what was settled, and what is open now. */
68
+ export interface SupportAnalyticsTickets {
69
+ raised: number;
70
+ /** Different customers who raised them. */
71
+ customers: number;
72
+ /** Raised by promoting a piece of customer feedback. */
73
+ fromFeedback: number;
74
+ /** Tickets resolved in the period (a status move to RESOLVED). */
75
+ resolved: number;
76
+ closed: number;
77
+ reopened: number;
78
+ cancelled: number;
79
+ /** Reopened / (resolved or closed) in the period, as a percentage. */
80
+ reopenRate: number | null;
81
+ /** Open at the start and at the end of the period (from the status history). */
82
+ backlogStart: number;
83
+ backlogEnd: number;
84
+ /** NOW, whatever the period. */
85
+ openNow: number;
86
+ unassignedNow: number;
87
+ waitingOnCustomerNow: number;
88
+ waitingOnInternalTeamNow: number;
89
+ /** Open, and nobody has answered yet. */
90
+ awaitingFirstResponseNow: number;
91
+ /** When the oldest open ticket was raised; null when nothing is open. */
92
+ oldestOpenAt: string | null;
93
+ /** Tickets raised in the period, by where they stand now - every status, in lifecycle order. */
94
+ byStatus: SupportAnalyticsCount[];
95
+ /** CRITICAL, URGENT, HIGH, NORMAL, LOW - in that order, zeros included. */
96
+ byPriority: SupportAnalyticsCount[];
97
+ byChannel: SupportAnalyticsCount[];
98
+ bySource: SupportAnalyticsCount[];
99
+ byCountry: SupportAnalyticsCount[];
100
+ /** The app it was raised from; NONE when not recorded. */
101
+ byApp: SupportAnalyticsCount[];
102
+ /** What the ticket is about (an incident, a payment...), each linked kind counted once per ticket. */
103
+ byRelatedType: SupportAnalyticsCount[];
104
+ /** The ten most used tags. */
105
+ byTag: SupportAnalyticsCount[];
106
+ byCategory: SupportAnalyticsGroupRow[];
107
+ byQueue: SupportAnalyticsGroupRow[];
108
+ byTeam: SupportAnalyticsGroupRow[];
109
+ }
110
+ /** How long each step took. */
111
+ export interface SupportAnalyticsTimings {
112
+ /** Raised to the first assignment to an agent - tickets raised in the period. */
113
+ toAssign: SupportAnalyticsDuration;
114
+ /** Raised to the first reply - tickets raised in the period. */
115
+ toFirstResponse: SupportAnalyticsDuration;
116
+ /** Raised to first resolved or closed - tickets first settled in the period. */
117
+ toResolve: SupportAnalyticsDuration;
118
+ /** Time spent waiting on the customer (the SLA clock paused) - tickets first settled in the period that waited. */
119
+ waitingOnCustomer: SupportAnalyticsDuration;
120
+ }
121
+ /** One SLA clock over the tickets raised in the period. */
122
+ export interface SupportAnalyticsSlaClock {
123
+ met: number;
124
+ breached: number;
125
+ /** On track, at risk or paused - not settled yet. */
126
+ running: number;
127
+ /** No policy applied. */
128
+ notApplicable: number;
129
+ /** met / (met + breached), as a percentage. */
130
+ rate: number | null;
131
+ }
132
+ /** The SLA by priority - tickets raised in the period. */
133
+ export interface SupportAnalyticsSlaPriorityRow {
134
+ priority: string;
135
+ raised: number;
136
+ firstResponseMet: number;
137
+ firstResponseBreached: number;
138
+ resolutionMet: number;
139
+ resolutionBreached: number;
140
+ medianSecondsToFirstResponse: number | null;
141
+ medianSecondsToResolve: number | null;
142
+ /** The policy's targets, as applied to these tickets (average), in minutes as policies are written. */
143
+ firstResponseTargetMinutes: number | null;
144
+ resolutionTargetMinutes: number | null;
145
+ }
146
+ export interface SupportAnalyticsSla {
147
+ firstResponse: SupportAnalyticsSlaClock;
148
+ resolution: SupportAnalyticsSlaClock;
149
+ /** Breach alerts raised by the monitor in the period - first response and resolution. */
150
+ breachAlerts: number;
151
+ firstResponseBreachAlerts: number;
152
+ resolutionBreachAlerts: number;
153
+ /** Warnings raised in the period (a deadline close). */
154
+ warnings: number;
155
+ /** NOW: open tickets with a clock at risk, or already breached. */
156
+ atRiskNow: number;
157
+ breachedOpenNow: number;
158
+ byPriority: SupportAnalyticsSlaPriorityRow[];
159
+ }
160
+ /** The messages on tickets in the period. */
161
+ export interface SupportAnalyticsConversation {
162
+ customerMessages: number;
163
+ agentReplies: number;
164
+ /** Of the agent replies, those written in the helpdesk (Zammad, Freshdesk) and synced in. */
165
+ repliesFromHelpdesk: number;
166
+ internalNotes: number;
167
+ /** System and status messages. */
168
+ systemMessages: number;
169
+ /** Agents who replied from Clarion (helpdesk agents have no Clarion account to count). */
170
+ agentsReplying: number;
171
+ /** Agent replies on the tickets first settled in the period, per ticket. */
172
+ repliesPerResolvedTicket: number | null;
173
+ /** Customer messages on those tickets, per ticket - the back-and-forth it took. */
174
+ customerMessagesPerResolvedTicket: number | null;
175
+ }
176
+ /** One agent's work. Agents are named, as on the desk's team report. */
177
+ export interface SupportAnalyticsAgentRow {
178
+ agentUserId: number;
179
+ name: string | null;
180
+ /** Open and assigned to them now. */
181
+ openNow: number;
182
+ /** Tickets raised in the period that are assigned to them. */
183
+ raised: number;
184
+ /** Tickets assigned to them first settled in the period. */
185
+ resolved: number;
186
+ /** Replies they wrote in the period. */
187
+ replies: number;
188
+ medianSecondsToFirstResponse: number | null;
189
+ medianSecondsToResolve: number | null;
190
+ /** Their tickets raised in the period with a breached clock. */
191
+ breached: number;
192
+ /** Ratings left in the period on their tickets. */
193
+ ratings: number;
194
+ ratingAverage: number | null;
195
+ }
196
+ export interface SupportAnalyticsAgents {
197
+ /** Agents assigned anything open, or who settled, were given or replied to anything in the period. */
198
+ rows: SupportAnalyticsAgentRow[];
199
+ /** Assignments made in the period, and of those reassignments from one agent to another. */
200
+ assignments: number;
201
+ reassignments: number;
202
+ }
203
+ /** An open ticket, oldest first - for a supervisor to act on. No subject, no customer. */
204
+ export interface SupportAnalyticsOpenTicketRow {
205
+ id: string;
206
+ ticketNumber: string;
207
+ organizationId: number;
208
+ status: string;
209
+ priority: string;
210
+ createdAt: string;
211
+ agentUserId: number | null;
212
+ agentName: string | null;
213
+ categoryName: string | null;
214
+ queueName: string | null;
215
+ firstResponseSlaState: string;
216
+ resolutionSlaState: string;
217
+ /** Nobody has replied yet. */
218
+ awaitingFirstResponse: boolean;
219
+ }
220
+ /** What customers thought of the help they got: the ratings left on resolved tickets. */
221
+ export interface SupportAnalyticsSatisfaction {
222
+ ratings: number;
223
+ /** Out of 5. */
224
+ average: number | null;
225
+ /** Rated 4 or 5, as a percentage of ratings. */
226
+ csat: number | null;
227
+ /** 1 to 5, in that order. */
228
+ distribution: SupportAnalyticsCount[];
229
+ /** Ratings in the period / tickets first settled in the period, as a percentage. */
230
+ ratedShare: number | null;
231
+ }
232
+ /** Customer feedback - a separate domain from tickets. Support ratings are counted in `satisfaction`, not here. */
233
+ export interface SupportAnalyticsFeedback {
234
+ received: number;
235
+ people: number;
236
+ /** Of those received in the period: reviewed, responded to, turned into a ticket, dismissed. */
237
+ reviewed: number;
238
+ responded: number;
239
+ converted: number;
240
+ dismissed: number;
241
+ /** Received to the desk's first response. */
242
+ toRespond: SupportAnalyticsDuration;
243
+ /** NOW: feedback nobody has dealt with (new or under review), whenever received. */
244
+ openNow: number;
245
+ byType: SupportAnalyticsCount[];
246
+ /** Every status, in workflow order, zeros included. */
247
+ byStatus: SupportAnalyticsCount[];
248
+ /** POSITIVE, NEUTRAL, NEGATIVE, UNKNOWN - in that order. */
249
+ bySentiment: SupportAnalyticsCount[];
250
+ byChannel: SupportAnalyticsCount[];
251
+ byPlatform: SupportAnalyticsCount[];
252
+ /** "app version" - the ten with most feedback. */
253
+ byAppVersion: SupportAnalyticsCount[];
254
+ /** Ratings of the SERVICE (not of support): how many, the average out of 5, and 1 to 5. */
255
+ serviceRatings: number;
256
+ serviceRatingAverage: number | null;
257
+ serviceRatingDistribution: SupportAnalyticsCount[];
258
+ }
259
+ /** One kind of helpdesk operation and how it went. */
260
+ export interface SupportAnalyticsSyncOperationRow {
261
+ operation: string;
262
+ attempts: number;
263
+ succeeded: number;
264
+ failed: number;
265
+ deadLettered: number;
266
+ pending: number;
267
+ }
268
+ /**
269
+ * The helpdesk mirror (Zammad or Freshdesk). Per ORGANIZATION: the country picked does
270
+ * not narrow it, and a control centre sees its organization's.
271
+ */
272
+ export interface SupportAnalyticsHelpdesk {
273
+ /** The helpdesks written to in the period. */
274
+ providers: SupportAnalyticsCount[];
275
+ /** Synchronizations queued in the period, by where they stand now. */
276
+ operations: number;
277
+ succeeded: number;
278
+ failed: number;
279
+ deadLettered: number;
280
+ pending: number;
281
+ /** Skipped or superseded by a later change - nothing to send. */
282
+ skipped: number;
283
+ /** succeeded / (succeeded + failed + dead-lettered). */
284
+ successRate: number | null;
285
+ /** Queued to sent, for those that succeeded. */
286
+ toSync: SupportAnalyticsDuration;
287
+ /** NOW: dead-lettered rows waiting for a person, and rows still to send - whenever queued. */
288
+ deadLetteredNow: number;
289
+ pendingNow: number;
290
+ /** NOW: tickets whose last mirror attempt failed. */
291
+ ticketsWithFailedSyncNow: number;
292
+ byOperation: SupportAnalyticsSyncOperationRow[];
293
+ failureReasons: SupportAnalyticsCount[];
294
+ /** Webhooks the helpdesk sent in the period, by what became of them. */
295
+ webhooks: number;
296
+ webhooksByStatus: SupportAnalyticsCount[];
297
+ medianWebhookMs: number | null;
298
+ }
299
+ /** One point on the charts: a bucket of the period. */
300
+ export interface SupportAnalyticsPoint {
301
+ /** Local wall-clock start of the bucket, in `range.timeZone` (no offset). */
302
+ bucket: string;
303
+ raised: number;
304
+ resolved: number;
305
+ closed: number;
306
+ reopened: number;
307
+ cancelled: number;
308
+ /** Open at the END of the bucket. */
309
+ backlog: number;
310
+ breachAlerts: number;
311
+ /** Of the tickets raised in the bucket. */
312
+ medianSecondsToFirstResponse: number | null;
313
+ ratings: number;
314
+ ratingAverage: number | null;
315
+ feedback: number;
316
+ }
317
+ /** One hour of the week. Weekday 1 is Monday. */
318
+ export interface SupportAnalyticsHeatCell {
319
+ weekday: number;
320
+ hour: number;
321
+ /** Tickets raised in it - when customers need help. */
322
+ raised: number;
323
+ /** Agent replies written in it - when the desk answers. */
324
+ replies: number;
325
+ }
326
+ /** The previous period of the same length, for the change on each headline figure. */
327
+ export interface SupportAnalyticsPrevious {
328
+ from: string;
329
+ to: string;
330
+ raised: number;
331
+ resolved: number;
332
+ reopened: number;
333
+ breachAlerts: number;
334
+ medianSecondsToFirstResponse: number | null;
335
+ medianSecondsToResolve: number | null;
336
+ firstResponseRate: number | null;
337
+ resolutionRate: number | null;
338
+ ratings: number;
339
+ ratingAverage: number | null;
340
+ csat: number | null;
341
+ feedback: number;
342
+ }
343
+ /** A Super-Admin's view of every organization: one row each, busiest first. */
344
+ export interface SupportAnalyticsOrganizationRow {
345
+ organizationId: number;
346
+ raised: number;
347
+ resolved: number;
348
+ openNow: number;
349
+ breachAlerts: number;
350
+ medianSecondsToFirstResponse: number | null;
351
+ firstResponseRate: number | null;
352
+ ratings: number;
353
+ ratingAverage: number | null;
354
+ feedback: number;
355
+ }
356
+ export interface SupportAnalytics {
357
+ /** Whose figures: one organization (and one control centre in it), or null for every organization. */
358
+ organizationId: number | null;
359
+ controlCentreId: number | null;
360
+ /** The one country the figures are narrowed to, or null for every country. */
361
+ countryCode: string | null;
362
+ range: SupportAnalyticsRange;
363
+ generatedAt: string;
364
+ previous: SupportAnalyticsPrevious | null;
365
+ /** Countries with tickets or feedback in scope, whatever country is chosen - for narrowing to one. */
366
+ countryOptions: SupportAnalyticsCount[];
367
+ tickets: SupportAnalyticsTickets;
368
+ timings: SupportAnalyticsTimings;
369
+ sla: SupportAnalyticsSla;
370
+ conversation: SupportAnalyticsConversation;
371
+ agents: SupportAnalyticsAgents;
372
+ /** The 25 oldest open tickets. */
373
+ oldestOpen: SupportAnalyticsOpenTicketRow[];
374
+ satisfaction: SupportAnalyticsSatisfaction;
375
+ feedback: SupportAnalyticsFeedback;
376
+ helpdesk: SupportAnalyticsHelpdesk;
377
+ timeline: SupportAnalyticsPoint[];
378
+ /** All 168 hours of the week, Monday first, zeros included. */
379
+ heatmap: SupportAnalyticsHeatCell[];
380
+ /** A Super-Admin looking at every organization only. */
381
+ byOrganization?: SupportAnalyticsOrganizationRow[];
382
+ }
383
+ /** What a dashboard asks: the period, one country - and, for a Super-Admin, whose figures. */
384
+ export interface SupportAnalyticsQuery {
385
+ from?: string;
386
+ to?: string;
387
+ timeZone?: string;
388
+ organizationId?: number;
389
+ countryCode?: string;
390
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clarion-shared-types",
3
- "version": "1.0.112",
3
+ "version": "1.0.113",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "types": "dist/types/index.d.ts",