grm-shared-library 1.1.201 → 1.1.203

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.
Files changed (244) hide show
  1. package/dist/cjs/index.js +1 -0
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/kafka/topics.js +26 -0
  4. package/dist/cjs/kafka/topics.js.map +1 -1
  5. package/dist/cjs/modules/common/constants/service.const.js +1 -0
  6. package/dist/cjs/modules/common/constants/service.const.js.map +1 -1
  7. package/dist/cjs/modules/permission/data/permissions.data.js +26 -0
  8. package/dist/cjs/modules/permission/data/permissions.data.js.map +1 -1
  9. package/dist/cjs/modules/permission/enums/permission-actions.enum.js +40 -0
  10. package/dist/cjs/modules/permission/enums/permission-actions.enum.js.map +1 -1
  11. package/dist/cjs/modules/permission/enums/permissions-module.enum.js +1 -0
  12. package/dist/cjs/modules/permission/enums/permissions-module.enum.js.map +1 -1
  13. package/dist/cjs/modules/role/data/roles.data.js +85 -0
  14. package/dist/cjs/modules/role/data/roles.data.js.map +1 -1
  15. package/dist/cjs/modules/socket/enums/redis-channel-name.enum.js +1 -0
  16. package/dist/cjs/modules/socket/enums/redis-channel-name.enum.js.map +1 -1
  17. package/dist/cjs/modules/socket/enums/room-type.enum.js +8 -0
  18. package/dist/cjs/modules/socket/enums/room-type.enum.js.map +1 -1
  19. package/dist/cjs/modules/socket/enums/socket-event-name.enum.js +5 -0
  20. package/dist/cjs/modules/socket/enums/socket-event-name.enum.js.map +1 -1
  21. package/dist/cjs/modules/support/constants/support-defaults.const.js +139 -0
  22. package/dist/cjs/modules/support/constants/support-defaults.const.js.map +1 -0
  23. package/dist/cjs/modules/support/constants/support-kafka.const.js +51 -0
  24. package/dist/cjs/modules/support/constants/support-kafka.const.js.map +1 -0
  25. package/dist/cjs/modules/support/dtos/create-support-ticket-message.dto.js +82 -0
  26. package/dist/cjs/modules/support/dtos/create-support-ticket-message.dto.js.map +1 -0
  27. package/dist/cjs/modules/support/dtos/create-support-ticket.dto.js +169 -0
  28. package/dist/cjs/modules/support/dtos/create-support-ticket.dto.js.map +1 -0
  29. package/dist/cjs/modules/support/dtos/customer-feedback.dto.js +401 -0
  30. package/dist/cjs/modules/support/dtos/customer-feedback.dto.js.map +1 -0
  31. package/dist/cjs/modules/support/dtos/support-configuration.dto.js +732 -0
  32. package/dist/cjs/modules/support/dtos/support-configuration.dto.js.map +1 -0
  33. package/dist/cjs/modules/support/dtos/support-related-entity.dto.js +38 -0
  34. package/dist/cjs/modules/support/dtos/support-related-entity.dto.js.map +1 -0
  35. package/dist/cjs/modules/support/dtos/support-report-query.dto.js +127 -0
  36. package/dist/cjs/modules/support/dtos/support-report-query.dto.js.map +1 -0
  37. package/dist/cjs/modules/support/dtos/support-sync.dto.js +175 -0
  38. package/dist/cjs/modules/support/dtos/support-sync.dto.js.map +1 -0
  39. package/dist/cjs/modules/support/dtos/support-ticket-actions.dto.js +191 -0
  40. package/dist/cjs/modules/support/dtos/support-ticket-actions.dto.js.map +1 -0
  41. package/dist/cjs/modules/support/dtos/support-ticket-query.dto.js +225 -0
  42. package/dist/cjs/modules/support/dtos/support-ticket-query.dto.js.map +1 -0
  43. package/dist/cjs/modules/support/enums/support-audit-action.enum.js +87 -0
  44. package/dist/cjs/modules/support/enums/support-audit-action.enum.js.map +1 -0
  45. package/dist/cjs/modules/support/enums/support-feedback.enum.js +110 -0
  46. package/dist/cjs/modules/support/enums/support-feedback.enum.js.map +1 -0
  47. package/dist/cjs/modules/support/enums/support-provider-code.enum.js +66 -0
  48. package/dist/cjs/modules/support/enums/support-provider-code.enum.js.map +1 -0
  49. package/dist/cjs/modules/support/enums/support-related-entity-type.enum.js +50 -0
  50. package/dist/cjs/modules/support/enums/support-related-entity-type.enum.js.map +1 -0
  51. package/dist/cjs/modules/support/enums/support-routing.enum.js +58 -0
  52. package/dist/cjs/modules/support/enums/support-routing.enum.js.map +1 -0
  53. package/dist/cjs/modules/support/enums/support-sla.enum.js +55 -0
  54. package/dist/cjs/modules/support/enums/support-sla.enum.js.map +1 -0
  55. package/dist/cjs/modules/support/enums/support-sync.enum.js +133 -0
  56. package/dist/cjs/modules/support/enums/support-sync.enum.js.map +1 -0
  57. package/dist/cjs/modules/support/enums/support-ticket-channel.enum.js +36 -0
  58. package/dist/cjs/modules/support/enums/support-ticket-channel.enum.js.map +1 -0
  59. package/dist/cjs/modules/support/enums/support-ticket-message.enum.js +54 -0
  60. package/dist/cjs/modules/support/enums/support-ticket-message.enum.js.map +1 -0
  61. package/dist/cjs/modules/support/enums/support-ticket-priority.enum.js +41 -0
  62. package/dist/cjs/modules/support/enums/support-ticket-priority.enum.js.map +1 -0
  63. package/dist/cjs/modules/support/enums/support-ticket-status.enum.js +138 -0
  64. package/dist/cjs/modules/support/enums/support-ticket-status.enum.js.map +1 -0
  65. package/dist/cjs/modules/support/index.js +60 -0
  66. package/dist/cjs/modules/support/index.js.map +1 -0
  67. package/dist/cjs/modules/support/interfaces/customer-feedback.js +3 -0
  68. package/dist/cjs/modules/support/interfaces/customer-feedback.js.map +1 -0
  69. package/dist/cjs/modules/support/interfaces/support-configuration.js +3 -0
  70. package/dist/cjs/modules/support/interfaces/support-configuration.js.map +1 -0
  71. package/dist/cjs/modules/support/interfaces/support-events.js +3 -0
  72. package/dist/cjs/modules/support/interfaces/support-events.js.map +1 -0
  73. package/dist/cjs/modules/support/interfaces/support-provider-descriptor.js +3 -0
  74. package/dist/cjs/modules/support/interfaces/support-provider-descriptor.js.map +1 -0
  75. package/dist/cjs/modules/support/interfaces/support-realtime.js +18 -0
  76. package/dist/cjs/modules/support/interfaces/support-realtime.js.map +1 -0
  77. package/dist/cjs/modules/support/interfaces/support-reports.js +3 -0
  78. package/dist/cjs/modules/support/interfaces/support-reports.js.map +1 -0
  79. package/dist/cjs/modules/support/interfaces/support-sync.js +3 -0
  80. package/dist/cjs/modules/support/interfaces/support-sync.js.map +1 -0
  81. package/dist/cjs/modules/support/interfaces/support-ticket-message.js +3 -0
  82. package/dist/cjs/modules/support/interfaces/support-ticket-message.js.map +1 -0
  83. package/dist/cjs/modules/support/interfaces/support-ticket.js +3 -0
  84. package/dist/cjs/modules/support/interfaces/support-ticket.js.map +1 -0
  85. package/dist/cjs/modules/support/utils/support-feedback.util.js +66 -0
  86. package/dist/cjs/modules/support/utils/support-feedback.util.js.map +1 -0
  87. package/dist/cjs/modules/support/utils/support-redaction.util.js +173 -0
  88. package/dist/cjs/modules/support/utils/support-redaction.util.js.map +1 -0
  89. package/dist/cjs/modules/support/utils/support-routing.util.js +87 -0
  90. package/dist/cjs/modules/support/utils/support-routing.util.js.map +1 -0
  91. package/dist/cjs/modules/support/utils/support-sla.util.js +239 -0
  92. package/dist/cjs/modules/support/utils/support-sla.util.js.map +1 -0
  93. package/dist/cjs/modules/support/utils/support-status.util.js +93 -0
  94. package/dist/cjs/modules/support/utils/support-status.util.js.map +1 -0
  95. package/dist/cjs/modules/support/utils/support-sync.util.js +151 -0
  96. package/dist/cjs/modules/support/utils/support-sync.util.js.map +1 -0
  97. package/dist/cjs/modules/support/utils/support-ticket-number.util.js +61 -0
  98. package/dist/cjs/modules/support/utils/support-ticket-number.util.js.map +1 -0
  99. package/dist/esm/index.js +1 -0
  100. package/dist/esm/index.js.map +1 -1
  101. package/dist/esm/kafka/topics.js +26 -0
  102. package/dist/esm/kafka/topics.js.map +1 -1
  103. package/dist/esm/modules/common/constants/service.const.js +1 -0
  104. package/dist/esm/modules/common/constants/service.const.js.map +1 -1
  105. package/dist/esm/modules/permission/data/permissions.data.js +26 -0
  106. package/dist/esm/modules/permission/data/permissions.data.js.map +1 -1
  107. package/dist/esm/modules/permission/enums/permission-actions.enum.js +40 -0
  108. package/dist/esm/modules/permission/enums/permission-actions.enum.js.map +1 -1
  109. package/dist/esm/modules/permission/enums/permissions-module.enum.js +1 -0
  110. package/dist/esm/modules/permission/enums/permissions-module.enum.js.map +1 -1
  111. package/dist/esm/modules/role/data/roles.data.js +85 -0
  112. package/dist/esm/modules/role/data/roles.data.js.map +1 -1
  113. package/dist/esm/modules/socket/enums/redis-channel-name.enum.js +1 -0
  114. package/dist/esm/modules/socket/enums/redis-channel-name.enum.js.map +1 -1
  115. package/dist/esm/modules/socket/enums/room-type.enum.js +8 -0
  116. package/dist/esm/modules/socket/enums/room-type.enum.js.map +1 -1
  117. package/dist/esm/modules/socket/enums/socket-event-name.enum.js +5 -0
  118. package/dist/esm/modules/socket/enums/socket-event-name.enum.js.map +1 -1
  119. package/dist/esm/modules/support/constants/support-defaults.const.js +136 -0
  120. package/dist/esm/modules/support/constants/support-defaults.const.js.map +1 -0
  121. package/dist/esm/modules/support/constants/support-kafka.const.js +48 -0
  122. package/dist/esm/modules/support/constants/support-kafka.const.js.map +1 -0
  123. package/dist/esm/modules/support/dtos/create-support-ticket-message.dto.js +77 -0
  124. package/dist/esm/modules/support/dtos/create-support-ticket-message.dto.js.map +1 -0
  125. package/dist/esm/modules/support/dtos/create-support-ticket.dto.js +165 -0
  126. package/dist/esm/modules/support/dtos/create-support-ticket.dto.js.map +1 -0
  127. package/dist/esm/modules/support/dtos/customer-feedback.dto.js +392 -0
  128. package/dist/esm/modules/support/dtos/customer-feedback.dto.js.map +1 -0
  129. package/dist/esm/modules/support/dtos/support-configuration.dto.js +716 -0
  130. package/dist/esm/modules/support/dtos/support-configuration.dto.js.map +1 -0
  131. package/dist/esm/modules/support/dtos/support-related-entity.dto.js +34 -0
  132. package/dist/esm/modules/support/dtos/support-related-entity.dto.js.map +1 -0
  133. package/dist/esm/modules/support/dtos/support-report-query.dto.js +123 -0
  134. package/dist/esm/modules/support/dtos/support-report-query.dto.js.map +1 -0
  135. package/dist/esm/modules/support/dtos/support-sync.dto.js +169 -0
  136. package/dist/esm/modules/support/dtos/support-sync.dto.js.map +1 -0
  137. package/dist/esm/modules/support/dtos/support-ticket-actions.dto.js +180 -0
  138. package/dist/esm/modules/support/dtos/support-ticket-actions.dto.js.map +1 -0
  139. package/dist/esm/modules/support/dtos/support-ticket-query.dto.js +221 -0
  140. package/dist/esm/modules/support/dtos/support-ticket-query.dto.js.map +1 -0
  141. package/dist/esm/modules/support/enums/support-audit-action.enum.js +84 -0
  142. package/dist/esm/modules/support/enums/support-audit-action.enum.js.map +1 -0
  143. package/dist/esm/modules/support/enums/support-feedback.enum.js +107 -0
  144. package/dist/esm/modules/support/enums/support-feedback.enum.js.map +1 -0
  145. package/dist/esm/modules/support/enums/support-provider-code.enum.js +63 -0
  146. package/dist/esm/modules/support/enums/support-provider-code.enum.js.map +1 -0
  147. package/dist/esm/modules/support/enums/support-related-entity-type.enum.js +47 -0
  148. package/dist/esm/modules/support/enums/support-related-entity-type.enum.js.map +1 -0
  149. package/dist/esm/modules/support/enums/support-routing.enum.js +55 -0
  150. package/dist/esm/modules/support/enums/support-routing.enum.js.map +1 -0
  151. package/dist/esm/modules/support/enums/support-sla.enum.js +52 -0
  152. package/dist/esm/modules/support/enums/support-sla.enum.js.map +1 -0
  153. package/dist/esm/modules/support/enums/support-sync.enum.js +130 -0
  154. package/dist/esm/modules/support/enums/support-sync.enum.js.map +1 -0
  155. package/dist/esm/modules/support/enums/support-ticket-channel.enum.js +33 -0
  156. package/dist/esm/modules/support/enums/support-ticket-channel.enum.js.map +1 -0
  157. package/dist/esm/modules/support/enums/support-ticket-message.enum.js +51 -0
  158. package/dist/esm/modules/support/enums/support-ticket-message.enum.js.map +1 -0
  159. package/dist/esm/modules/support/enums/support-ticket-priority.enum.js +38 -0
  160. package/dist/esm/modules/support/enums/support-ticket-priority.enum.js.map +1 -0
  161. package/dist/esm/modules/support/enums/support-ticket-status.enum.js +135 -0
  162. package/dist/esm/modules/support/enums/support-ticket-status.enum.js.map +1 -0
  163. package/dist/esm/modules/support/index.js +44 -0
  164. package/dist/esm/modules/support/index.js.map +1 -0
  165. package/dist/esm/modules/support/interfaces/customer-feedback.js +2 -0
  166. package/dist/esm/modules/support/interfaces/customer-feedback.js.map +1 -0
  167. package/dist/esm/modules/support/interfaces/support-configuration.js +2 -0
  168. package/dist/esm/modules/support/interfaces/support-configuration.js.map +1 -0
  169. package/dist/esm/modules/support/interfaces/support-events.js +2 -0
  170. package/dist/esm/modules/support/interfaces/support-events.js.map +1 -0
  171. package/dist/esm/modules/support/interfaces/support-provider-descriptor.js +2 -0
  172. package/dist/esm/modules/support/interfaces/support-provider-descriptor.js.map +1 -0
  173. package/dist/esm/modules/support/interfaces/support-realtime.js +15 -0
  174. package/dist/esm/modules/support/interfaces/support-realtime.js.map +1 -0
  175. package/dist/esm/modules/support/interfaces/support-reports.js +2 -0
  176. package/dist/esm/modules/support/interfaces/support-reports.js.map +1 -0
  177. package/dist/esm/modules/support/interfaces/support-sync.js +2 -0
  178. package/dist/esm/modules/support/interfaces/support-sync.js.map +1 -0
  179. package/dist/esm/modules/support/interfaces/support-ticket-message.js +2 -0
  180. package/dist/esm/modules/support/interfaces/support-ticket-message.js.map +1 -0
  181. package/dist/esm/modules/support/interfaces/support-ticket.js +2 -0
  182. package/dist/esm/modules/support/interfaces/support-ticket.js.map +1 -0
  183. package/dist/esm/modules/support/utils/support-feedback.util.js +60 -0
  184. package/dist/esm/modules/support/utils/support-feedback.util.js.map +1 -0
  185. package/dist/esm/modules/support/utils/support-redaction.util.js +164 -0
  186. package/dist/esm/modules/support/utils/support-redaction.util.js.map +1 -0
  187. package/dist/esm/modules/support/utils/support-routing.util.js +82 -0
  188. package/dist/esm/modules/support/utils/support-routing.util.js.map +1 -0
  189. package/dist/esm/modules/support/utils/support-sla.util.js +229 -0
  190. package/dist/esm/modules/support/utils/support-sla.util.js.map +1 -0
  191. package/dist/esm/modules/support/utils/support-status.util.js +81 -0
  192. package/dist/esm/modules/support/utils/support-status.util.js.map +1 -0
  193. package/dist/esm/modules/support/utils/support-sync.util.js +142 -0
  194. package/dist/esm/modules/support/utils/support-sync.util.js.map +1 -0
  195. package/dist/esm/modules/support/utils/support-ticket-number.util.js +56 -0
  196. package/dist/esm/modules/support/utils/support-ticket-number.util.js.map +1 -0
  197. package/dist/types/index.d.ts +1 -0
  198. package/dist/types/kafka/topics.d.ts +21 -0
  199. package/dist/types/modules/common/constants/service.const.d.ts +4 -0
  200. package/dist/types/modules/permission/enums/permission-actions.enum.d.ts +21 -0
  201. package/dist/types/modules/permission/enums/permissions-module.enum.d.ts +2 -1
  202. package/dist/types/modules/socket/enums/redis-channel-name.enum.d.ts +2 -1
  203. package/dist/types/modules/socket/enums/room-type.enum.d.ts +8 -0
  204. package/dist/types/modules/socket/enums/socket-event-name.enum.d.ts +2 -1
  205. package/dist/types/modules/support/constants/support-defaults.const.d.ts +129 -0
  206. package/dist/types/modules/support/constants/support-kafka.const.d.ts +47 -0
  207. package/dist/types/modules/support/dtos/create-support-ticket-message.dto.d.ts +30 -0
  208. package/dist/types/modules/support/dtos/create-support-ticket.dto.d.ts +35 -0
  209. package/dist/types/modules/support/dtos/customer-feedback.dto.d.ts +83 -0
  210. package/dist/types/modules/support/dtos/support-configuration.dto.d.ts +130 -0
  211. package/dist/types/modules/support/dtos/support-related-entity.dto.d.ts +13 -0
  212. package/dist/types/modules/support/dtos/support-report-query.dto.d.ts +29 -0
  213. package/dist/types/modules/support/dtos/support-sync.dto.d.ts +40 -0
  214. package/dist/types/modules/support/dtos/support-ticket-actions.dto.d.ts +61 -0
  215. package/dist/types/modules/support/dtos/support-ticket-query.dto.d.ts +41 -0
  216. package/dist/types/modules/support/enums/support-audit-action.enum.d.ts +80 -0
  217. package/dist/types/modules/support/enums/support-feedback.enum.d.ts +65 -0
  218. package/dist/types/modules/support/enums/support-provider-code.enum.d.ts +57 -0
  219. package/dist/types/modules/support/enums/support-related-entity-type.enum.d.ts +41 -0
  220. package/dist/types/modules/support/enums/support-routing.enum.d.ts +48 -0
  221. package/dist/types/modules/support/enums/support-sla.enum.d.ts +47 -0
  222. package/dist/types/modules/support/enums/support-sync.enum.d.ts +108 -0
  223. package/dist/types/modules/support/enums/support-ticket-channel.enum.d.ts +30 -0
  224. package/dist/types/modules/support/enums/support-ticket-message.enum.d.ts +42 -0
  225. package/dist/types/modules/support/enums/support-ticket-priority.enum.d.ts +24 -0
  226. package/dist/types/modules/support/enums/support-ticket-status.enum.d.ts +58 -0
  227. package/dist/types/modules/support/index.d.ts +38 -0
  228. package/dist/types/modules/support/interfaces/customer-feedback.d.ts +115 -0
  229. package/dist/types/modules/support/interfaces/support-configuration.d.ts +170 -0
  230. package/dist/types/modules/support/interfaces/support-events.d.ts +126 -0
  231. package/dist/types/modules/support/interfaces/support-provider-descriptor.d.ts +92 -0
  232. package/dist/types/modules/support/interfaces/support-realtime.d.ts +65 -0
  233. package/dist/types/modules/support/interfaces/support-reports.d.ts +122 -0
  234. package/dist/types/modules/support/interfaces/support-sync.d.ts +105 -0
  235. package/dist/types/modules/support/interfaces/support-ticket-message.d.ts +66 -0
  236. package/dist/types/modules/support/interfaces/support-ticket.d.ts +180 -0
  237. package/dist/types/modules/support/utils/support-feedback.util.d.ts +23 -0
  238. package/dist/types/modules/support/utils/support-redaction.util.d.ts +48 -0
  239. package/dist/types/modules/support/utils/support-routing.util.d.ts +50 -0
  240. package/dist/types/modules/support/utils/support-sla.util.d.ts +69 -0
  241. package/dist/types/modules/support/utils/support-status.util.d.ts +44 -0
  242. package/dist/types/modules/support/utils/support-sync.util.d.ts +76 -0
  243. package/dist/types/modules/support/utils/support-ticket-number.util.d.ts +39 -0
  244. package/package.json +1 -1
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canTransitionSupportTicket = canTransitionSupportTicket;
4
+ exports.allowedSupportTicketTransitions = allowedSupportTicketTransitions;
5
+ exports.isTerminalSupportTicketStatus = isTerminalSupportTicketStatus;
6
+ exports.isActiveSupportTicketStatus = isActiveSupportTicketStatus;
7
+ exports.isSlaPausedStatus = isSlaPausedStatus;
8
+ exports.isSlaStoppedStatus = isSlaStoppedStatus;
9
+ exports.customerMayReply = customerMayReply;
10
+ exports.statusAfterCustomerReply = statusAfterCustomerReply;
11
+ exports.canTransitionCustomerFeedback = canTransitionCustomerFeedback;
12
+ exports.allowedCustomerFeedbackTransitions = allowedCustomerFeedbackTransitions;
13
+ const support_feedback_enum_1 = require("../enums/support-feedback.enum");
14
+ const support_ticket_status_enum_1 = require("../enums/support-ticket-status.enum");
15
+ /**
16
+ * Whether a ticket may move from one state to another.
17
+ *
18
+ * The single authority. Controllers, services, webhook handlers and the
19
+ * reconciliation job all ask this rather than each carrying their own idea of
20
+ * what is legal - which is what stops a provider webhook quietly doing
21
+ * something no Clarion user could do.
22
+ *
23
+ * A move to the SAME state is allowed and is a no-op, because a provider that
24
+ * re-sends its current status should not be an error.
25
+ */
26
+ function canTransitionSupportTicket(from, to) {
27
+ if (from === to)
28
+ return true;
29
+ const allowed = support_ticket_status_enum_1.SUPPORT_TICKET_TRANSITIONS[from];
30
+ return Array.isArray(allowed) && allowed.includes(to);
31
+ }
32
+ /** The states a ticket may legally move to right now. Drives the admin's buttons. */
33
+ function allowedSupportTicketTransitions(from) {
34
+ var _a;
35
+ return (_a = support_ticket_status_enum_1.SUPPORT_TICKET_TRANSITIONS[from]) !== null && _a !== void 0 ? _a : [];
36
+ }
37
+ function isTerminalSupportTicketStatus(status) {
38
+ return support_ticket_status_enum_1.TERMINAL_SUPPORT_TICKET_STATUSES.includes(status);
39
+ }
40
+ function isActiveSupportTicketStatus(status) {
41
+ return support_ticket_status_enum_1.ACTIVE_SUPPORT_TICKET_STATUSES.includes(status);
42
+ }
43
+ /** True while an SLA clock should be stopped but may still resume. */
44
+ function isSlaPausedStatus(status) {
45
+ return support_ticket_status_enum_1.SLA_PAUSED_SUPPORT_TICKET_STATUSES.includes(status);
46
+ }
47
+ /** True once the clocks stop for good. */
48
+ function isSlaStoppedStatus(status) {
49
+ return support_ticket_status_enum_1.SLA_STOPPED_SUPPORT_TICKET_STATUSES.includes(status);
50
+ }
51
+ /**
52
+ * Whether a customer may reply on a ticket in this state.
53
+ *
54
+ * A CANCELLED ticket is closed to further conversation; everything else, CLOSED
55
+ * included, accepts a reply - and a reply to a closed ticket reopens it, which
56
+ * is what a customer expects and what stops them raising a duplicate.
57
+ */
58
+ function customerMayReply(status) {
59
+ return status !== support_ticket_status_enum_1.SupportTicketStatus.CANCELLED;
60
+ }
61
+ /**
62
+ * The state a customer reply should move a ticket into, or null to leave it.
63
+ *
64
+ * CLOSED becomes REOPENED, which is counted. RESOLVED goes back to IN_PROGRESS,
65
+ * which is not - the ticket was never finished from the customer's point of
66
+ * view, and calling that a reopen would inflate the reopen rate with tickets
67
+ * that simply were not fixed yet. WAITING_ON_CUSTOMER becomes IN_PROGRESS,
68
+ * because the wait is over.
69
+ */
70
+ function statusAfterCustomerReply(status) {
71
+ switch (status) {
72
+ case support_ticket_status_enum_1.SupportTicketStatus.CLOSED:
73
+ return support_ticket_status_enum_1.SupportTicketStatus.REOPENED;
74
+ case support_ticket_status_enum_1.SupportTicketStatus.RESOLVED:
75
+ case support_ticket_status_enum_1.SupportTicketStatus.WAITING_ON_CUSTOMER:
76
+ return support_ticket_status_enum_1.SupportTicketStatus.IN_PROGRESS;
77
+ default:
78
+ return null;
79
+ }
80
+ }
81
+ /** Whether a piece of feedback may move from one state to another. */
82
+ function canTransitionCustomerFeedback(from, to) {
83
+ if (from === to)
84
+ return true;
85
+ const allowed = support_feedback_enum_1.CUSTOMER_FEEDBACK_TRANSITIONS[from];
86
+ return Array.isArray(allowed) && allowed.includes(to);
87
+ }
88
+ /** The states a piece of feedback may legally move to right now. */
89
+ function allowedCustomerFeedbackTransitions(from) {
90
+ var _a;
91
+ return (_a = support_feedback_enum_1.CUSTOMER_FEEDBACK_TRANSITIONS[from]) !== null && _a !== void 0 ? _a : [];
92
+ }
93
+ //# sourceMappingURL=support-status.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support-status.util.js","sourceRoot":"","sources":["../../../../../src/modules/support/utils/support-status.util.ts"],"names":[],"mappings":";;AAwBA,gEAOC;AAGD,0EAIC;AAED,sEAEC;AAED,kEAEC;AAGD,8CAEC;AAGD,gDAEC;AASD,4CAEC;AAWD,4DAYC;AAGD,sEAOC;AAGD,gFAIC;AA3GD,0EAGwC;AACxC,oFAO6C;AAE7C;;;;;;;;;;GAUG;AACH,SAAgB,0BAA0B,CACtC,IAAyB,EACzB,EAAuB;IAEvB,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,OAAO,GAAG,uDAA0B,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,qFAAqF;AACrF,SAAgB,+BAA+B,CAC3C,IAAyB;;IAEzB,OAAO,MAAA,uDAA0B,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;AAClD,CAAC;AAED,SAAgB,6BAA6B,CAAC,MAA2B;IACrE,OAAO,6DAAgC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,SAAgB,2BAA2B,CAAC,MAA2B;IACnE,OAAO,2DAA8B,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED,sEAAsE;AACtE,SAAgB,iBAAiB,CAAC,MAA2B;IACzD,OAAO,+DAAkC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED,0CAA0C;AAC1C,SAAgB,kBAAkB,CAAC,MAA2B;IAC1D,OAAO,gEAAmC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,MAA2B;IACxD,OAAO,MAAM,KAAK,gDAAmB,CAAC,SAAS,CAAC;AACpD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,wBAAwB,CACpC,MAA2B;IAE3B,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,gDAAmB,CAAC,MAAM;YAC3B,OAAO,gDAAmB,CAAC,QAAQ,CAAC;QACxC,KAAK,gDAAmB,CAAC,QAAQ,CAAC;QAClC,KAAK,gDAAmB,CAAC,mBAAmB;YACxC,OAAO,gDAAmB,CAAC,WAAW,CAAC;QAC3C;YACI,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC;AAED,sEAAsE;AACtE,SAAgB,6BAA6B,CACzC,IAA4B,EAC5B,EAA0B;IAE1B,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,OAAO,GAAG,qDAA6B,CAAC,IAAI,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,oEAAoE;AACpE,SAAgB,kCAAkC,CAC9C,IAA4B;;IAE5B,OAAO,MAAA,qDAA6B,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;AACrD,CAAC"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.classifySupportHttpStatus = classifySupportHttpStatus;
4
+ exports.isPermanentSupportSyncFailure = isPermanentSupportSyncFailure;
5
+ exports.computeSupportRetryDelaySeconds = computeSupportRetryDelaySeconds;
6
+ exports.computeSupportNextAttemptAt = computeSupportNextAttemptAt;
7
+ exports.fingerprintSupportPayload = fingerprintSupportPayload;
8
+ exports.isSupportCircuitOpen = isSupportCircuitOpen;
9
+ exports.nextSupportCircuitState = nextSupportCircuitState;
10
+ const support_defaults_const_1 = require("../constants/support-defaults.const");
11
+ const support_sync_enum_1 = require("../enums/support-sync.enum");
12
+ /**
13
+ * Translate a helpdesk HTTP status into the shared failure taxonomy.
14
+ *
15
+ * The single place the retry policy is decided, because "should we call the
16
+ * helpdesk again?" must not be answered differently by the Zammad adapter and
17
+ * the Freshdesk one. Anything unrecognised is TRANSIENT: a support message that
18
+ * arrives late is recoverable, one dropped because an unfamiliar status looked
19
+ * fatal is not.
20
+ *
21
+ * The one place that reasoning inverts is a 2xx nobody could parse. The
22
+ * provider accepted the request, so re-sending would create a second ticket or
23
+ * show the customer the same reply twice - see UNREADABLE_SUCCESS, which the
24
+ * adapter raises directly rather than through this function.
25
+ */
26
+ function classifySupportHttpStatus(status) {
27
+ if (status === undefined)
28
+ return support_sync_enum_1.SupportSyncFailureReason.TIMEOUT;
29
+ if (status >= 200 && status < 300)
30
+ return support_sync_enum_1.SupportSyncFailureReason.UNREADABLE_SUCCESS;
31
+ if (status === 400 || status === 422)
32
+ return support_sync_enum_1.SupportSyncFailureReason.INVALID_PAYLOAD;
33
+ if (status === 401)
34
+ return support_sync_enum_1.SupportSyncFailureReason.AUTHENTICATION_FAILED;
35
+ if (status === 403)
36
+ return support_sync_enum_1.SupportSyncFailureReason.AUTHORIZATION_FAILED;
37
+ // 404 is TRANSIENT on purpose. A genuinely wrong path exhausts its attempts
38
+ // in a few minutes and costs nothing; a 404 from an ingress mid-deploy is
39
+ // common, and treating that as permanent would silently drop a reply the
40
+ // customer is waiting for.
41
+ if (status === 404)
42
+ return support_sync_enum_1.SupportSyncFailureReason.PROVIDER_UNAVAILABLE;
43
+ if (status === 409)
44
+ return support_sync_enum_1.SupportSyncFailureReason.PROVIDER_REJECTED;
45
+ if (status === 429)
46
+ return support_sync_enum_1.SupportSyncFailureReason.RATE_LIMITED;
47
+ if (status >= 500)
48
+ return support_sync_enum_1.SupportSyncFailureReason.PROVIDER_UNAVAILABLE;
49
+ if (status >= 400)
50
+ return support_sync_enum_1.SupportSyncFailureReason.PROVIDER_REJECTED;
51
+ return support_sync_enum_1.SupportSyncFailureReason.UNKNOWN;
52
+ }
53
+ /**
54
+ * Whether a failure can ever succeed on a retry.
55
+ *
56
+ * AUTHENTICATION_FAILED is deliberately NOT permanent: a rotated credential
57
+ * that has not propagated to every pod yet fails this way, and refusing to try
58
+ * again would strand every queued reply until somebody noticed. It is capped by
59
+ * `maxAttempts` like anything else.
60
+ */
61
+ function isPermanentSupportSyncFailure(reason) {
62
+ return support_sync_enum_1.PERMANENT_SUPPORT_SYNC_FAILURE_REASONS.includes(reason);
63
+ }
64
+ /**
65
+ * When to try again, with exponential backoff and jitter.
66
+ *
67
+ * The jitter matters more than it looks: when a helpdesk comes back after an
68
+ * outage, every queued row is due at once, and a synchronized stampede is how a
69
+ * recovering server is knocked over a second time.
70
+ *
71
+ * `randomFraction` is injected rather than read from Math.random so the
72
+ * function stays pure and its tests stay deterministic.
73
+ */
74
+ function computeSupportRetryDelaySeconds(attempts, options = {}) {
75
+ var _a, _b, _c, _d;
76
+ const base = (_a = options.baseSeconds) !== null && _a !== void 0 ? _a : support_defaults_const_1.SUPPORT_SYNC_DEFAULTS.RETRY_BASE_SECONDS;
77
+ const max = (_b = options.maxSeconds) !== null && _b !== void 0 ? _b : support_defaults_const_1.SUPPORT_SYNC_DEFAULTS.RETRY_MAX_SECONDS;
78
+ const jitterRatio = (_c = options.jitterRatio) !== null && _c !== void 0 ? _c : support_defaults_const_1.SUPPORT_SYNC_DEFAULTS.RETRY_JITTER_RATIO;
79
+ const randomFraction = (_d = options.randomFraction) !== null && _d !== void 0 ? _d : 0;
80
+ const exponent = Math.max(0, attempts - 1);
81
+ const raw = base * Math.pow(2, Math.min(exponent, 16));
82
+ let delay = Math.min(max, raw);
83
+ // A provider that says when to come back is obeyed, so long as it is not
84
+ // asking for longer than the ceiling.
85
+ if (options.retryAfterSeconds != null && options.retryAfterSeconds > 0) {
86
+ delay = Math.min(max, Math.max(delay, options.retryAfterSeconds));
87
+ }
88
+ const jitter = delay * jitterRatio * randomFraction;
89
+ return Math.round(delay + jitter);
90
+ }
91
+ /** The instant of the next attempt. */
92
+ function computeSupportNextAttemptAt(now, attempts, options) {
93
+ return new Date(now.getTime() + computeSupportRetryDelaySeconds(attempts, options) * 1000);
94
+ }
95
+ /**
96
+ * A stable fingerprint of an outbound payload.
97
+ *
98
+ * Deliberately not cryptographic. It exists to answer "is this the same request
99
+ * we already sent?" and to let a reconciliation job tell "never sent" from
100
+ * "sent and did not take" - neither of which is a security decision. Using a
101
+ * real digest here would pull a Node-only dependency into a package the
102
+ * frontend build also consumes.
103
+ */
104
+ function fingerprintSupportPayload(payload) {
105
+ const serialized = stableStringify(payload);
106
+ let hash = 5381;
107
+ for (let index = 0; index < serialized.length; index += 1) {
108
+ hash = ((hash << 5) + hash + serialized.charCodeAt(index)) | 0;
109
+ }
110
+ return `${(hash >>> 0).toString(16)}-${serialized.length.toString(16)}`;
111
+ }
112
+ /** JSON with object keys in a fixed order, so two equal payloads fingerprint alike. */
113
+ function stableStringify(value) {
114
+ var _a;
115
+ if (value === null || typeof value !== 'object')
116
+ return (_a = JSON.stringify(value)) !== null && _a !== void 0 ? _a : 'null';
117
+ if (Array.isArray(value))
118
+ return `[${value.map(stableStringify).join(',')}]`;
119
+ const source = value;
120
+ const keys = Object.keys(source).sort();
121
+ return `{${keys.map((key) => `${JSON.stringify(key)}:${stableStringify(source[key])}`).join(',')}}`;
122
+ }
123
+ /**
124
+ * Whether an outbound call may proceed.
125
+ *
126
+ * The breaker protects the helpdesk and this service's own worker from
127
+ * hammering a dead endpoint; it never causes data loss, because a call refused
128
+ * by an open breaker leaves its row PENDING with a CIRCUIT_OPEN reason and is
129
+ * retried when the breaker closes.
130
+ */
131
+ function isSupportCircuitOpen(state, now) {
132
+ if (!(state === null || state === void 0 ? void 0 : state.openUntil))
133
+ return false;
134
+ return new Date(state.openUntil).getTime() > now.getTime();
135
+ }
136
+ /** The breaker state after one outcome. */
137
+ function nextSupportCircuitState(state, outcome, now, options = {}) {
138
+ var _a, _b, _c;
139
+ const threshold = (_a = options.failureThreshold) !== null && _a !== void 0 ? _a : support_defaults_const_1.SUPPORT_SYNC_DEFAULTS.CIRCUIT_FAILURE_THRESHOLD;
140
+ const openSeconds = (_b = options.openSeconds) !== null && _b !== void 0 ? _b : support_defaults_const_1.SUPPORT_SYNC_DEFAULTS.CIRCUIT_OPEN_SECONDS;
141
+ if (outcome === 'success')
142
+ return { consecutiveFailures: 0, openUntil: null };
143
+ const consecutiveFailures = ((_c = state === null || state === void 0 ? void 0 : state.consecutiveFailures) !== null && _c !== void 0 ? _c : 0) + 1;
144
+ if (consecutiveFailures < threshold)
145
+ return { consecutiveFailures, openUntil: null };
146
+ return {
147
+ consecutiveFailures,
148
+ openUntil: new Date(now.getTime() + openSeconds * 1000).toISOString(),
149
+ };
150
+ }
151
+ //# sourceMappingURL=support-sync.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support-sync.util.js","sourceRoot":"","sources":["../../../../../src/modules/support/utils/support-sync.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatSupportTicketNumber = formatSupportTicketNumber;
4
+ exports.parseSupportTicketNumber = parseSupportTicketNumber;
5
+ exports.looksLikeSupportTicketNumber = looksLikeSupportTicketNumber;
6
+ const support_defaults_const_1 = require("../constants/support-defaults.const");
7
+ /**
8
+ * Render a ticket number: SUP-KE-2026-000123.
9
+ *
10
+ * Human-readable and safe to read out over the phone, which is the whole point
11
+ * of it existing alongside the uuid primary key. It is never the primary key:
12
+ * it embeds a country and a year, and anything that embeds business meaning
13
+ * will eventually need changing.
14
+ *
15
+ * The sequence is allocated per (country, year) by the database, so this
16
+ * function only formats - it never decides what the next number is.
17
+ */
18
+ function formatSupportTicketNumber(countryCode, year, sequence) {
19
+ const padded = String(Math.max(0, Math.trunc(sequence))).padStart(support_defaults_const_1.SUPPORT_TICKET_NUMBER_SEQUENCE_WIDTH, '0');
20
+ return `${support_defaults_const_1.SUPPORT_TICKET_NUMBER_PREFIX}-${countryCode}-${year}-${padded}`;
21
+ }
22
+ /**
23
+ * Read a ticket number back, for search.
24
+ *
25
+ * Returns null rather than throwing on anything unrecognised: this runs on a
26
+ * search box, where the input is whatever somebody pasted, and a 500 from a bad
27
+ * paste is a worse answer than no results.
28
+ *
29
+ * A sequence longer than the configured width still parses - the width is a
30
+ * display minimum, and refusing to find ticket 1,000,000 because it has seven
31
+ * digits would be a bug that only appears once it is too late.
32
+ */
33
+ function parseSupportTicketNumber(value) {
34
+ if (value == null)
35
+ return null;
36
+ const raw = String(value).trim().toUpperCase();
37
+ const match = /^([A-Z]{2,5})-([A-Z]{2})-(\d{4})-(\d{1,12})$/.exec(raw);
38
+ if (!match)
39
+ return null;
40
+ const [, prefix, country, year, sequence] = match;
41
+ if (prefix !== support_defaults_const_1.SUPPORT_TICKET_NUMBER_PREFIX)
42
+ return null;
43
+ return {
44
+ prefix,
45
+ countryCode: country,
46
+ year: Number(year),
47
+ sequence: Number(sequence),
48
+ };
49
+ }
50
+ /**
51
+ * Whether a search term looks like somebody typing a ticket number.
52
+ *
53
+ * Used to route a search straight at the ticket-number index instead of running
54
+ * a full-text scan for a string that can only ever match one row.
55
+ */
56
+ function looksLikeSupportTicketNumber(value) {
57
+ if (value == null)
58
+ return false;
59
+ return /^SUP-/i.test(String(value).trim());
60
+ }
61
+ //# sourceMappingURL=support-ticket-number.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support-ticket-number.util.js","sourceRoot":"","sources":["../../../../../src/modules/support/utils/support-ticket-number.util.ts"],"names":[],"mappings":";;AAyBA,8DAUC;AAaD,4DAeC;AAQD,oEAGC;AAzED,gFAG6C;AAU7C;;;;;;;;;;GAUG;AACH,SAAgB,yBAAyB,CACrC,WAAwB,EACxB,IAAY,EACZ,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAC7D,6DAAoC,EACpC,GAAG,CACN,CAAC;IACF,OAAO,GAAG,qDAA4B,IAAI,WAAW,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,wBAAwB,CAAC,KAAgC;IACrE,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAG,8CAA8C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;IAClD,IAAI,MAAM,KAAK,qDAA4B;QAAE,OAAO,IAAI,CAAC;IAEzD,OAAO;QACH,MAAM;QACN,WAAW,EAAE,OAAsB;QACnC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;KAC7B,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAgB,4BAA4B,CAAC,KAAgC;IACzE,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAChC,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC"}
package/dist/esm/index.js CHANGED
@@ -24,6 +24,7 @@ export * from './modules/entitlement/index';
24
24
  export * from './modules/alert-dispatch/index';
25
25
  export * from './modules/system-user/index';
26
26
  export * from './modules/partner/index';
27
+ export * from './modules/support/index';
27
28
  // Interfaces
28
29
  export * from './interfaces/server-message';
29
30
  export * from './interfaces/i-request-with-user';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AAExC,aAAa;AACb,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AAExC,YAAY;AACZ,cAAc,0BAA0B,CAAC;AAEzC,QAAQ;AACR,cAAc,eAAe,CAAC;AAE9B,YAAY;AACZ,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uDAAuD,CAAC;AAEtE,aAAa;AACb,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AAExC,aAAa;AACb,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AAExC,YAAY;AACZ,cAAc,0BAA0B,CAAC;AAEzC,QAAQ;AACR,cAAc,eAAe,CAAC;AAE9B,YAAY;AACZ,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uDAAuD,CAAC;AAEtE,aAAa;AACb,cAAc,oBAAoB,CAAC"}
@@ -69,5 +69,31 @@ export const KAFKA_TOPICS = {
69
69
  // Third-party partner dispatch (producer: clarion-partner-services) - versioned.
70
70
  PARTNER_DISPATCH_CREATED: 'partner.dispatch.created.v1',
71
71
  PARTNER_DISPATCH_STATUS_CHANGED: 'partner.dispatch.status-changed.v1',
72
+ // Support tickets and customer feedback (producer: clarion-support) - versioned.
73
+ // Every payload is secret-free: identifiers, states and timestamps only. A
74
+ // support message body never travels on a topic, because a topic is read by
75
+ // consumers nobody enumerated and a support message is exactly the kind of
76
+ // thing that turns out to contain a password somebody pasted in.
77
+ SUPPORT_TICKET_CREATED: 'support.ticket.created.v1',
78
+ SUPPORT_TICKET_UPDATED: 'support.ticket.updated.v1',
79
+ SUPPORT_TICKET_ASSIGNED: 'support.ticket.assigned.v1',
80
+ SUPPORT_TICKET_STATUS_CHANGED: 'support.ticket.status-changed.v1',
81
+ SUPPORT_TICKET_PRIORITY_CHANGED: 'support.ticket.priority-changed.v1',
82
+ SUPPORT_TICKET_MESSAGE_CREATED: 'support.ticket.message-created.v1',
83
+ SUPPORT_TICKET_CUSTOMER_REPLIED: 'support.ticket.customer-replied.v1',
84
+ SUPPORT_TICKET_AGENT_REPLIED: 'support.ticket.agent-replied.v1',
85
+ SUPPORT_TICKET_RESOLVED: 'support.ticket.resolved.v1',
86
+ SUPPORT_TICKET_CLOSED: 'support.ticket.closed.v1',
87
+ SUPPORT_TICKET_REOPENED: 'support.ticket.reopened.v1',
88
+ SUPPORT_TICKET_SLA_WARNING: 'support.ticket.sla-warning.v1',
89
+ SUPPORT_TICKET_SLA_BREACHED: 'support.ticket.sla-breached.v1',
90
+ SUPPORT_FEEDBACK_CREATED: 'support.feedback.created.v1',
91
+ SUPPORT_FEEDBACK_UPDATED: 'support.feedback.updated.v1',
92
+ SUPPORT_FEEDBACK_REVIEWED: 'support.feedback.reviewed.v1',
93
+ SUPPORT_FEEDBACK_RESPONDED: 'support.feedback.responded.v1',
94
+ SUPPORT_FEEDBACK_CONVERTED_TO_TICKET: 'support.feedback.converted-to-ticket.v1',
95
+ SUPPORT_FEEDBACK_RATING_SUBMITTED: 'support.feedback.rating-submitted.v1',
96
+ SUPPORT_PROVIDER_SYNC_FAILED: 'support.provider.sync-failed.v1',
97
+ SUPPORT_PROVIDER_SYNC_RECOVERED: 'support.provider.sync-recovered.v1',
72
98
  };
73
99
  //# sourceMappingURL=topics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"topics.js","sourceRoot":"","sources":["../../../src/kafka/topics.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,OAAO;IACP,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,6BAA6B,EAAE,+BAA+B;IAC9D,6BAA6B,EAAE,+BAA+B;IAC9D,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,MAAM;IACN,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,MAAM;IACN,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,eAAe;IAC9B,WAAW;IACX,cAAc,EAAE,gBAAgB;IAChC,WAAW;IACX,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,uBAAuB,EAAE,yBAAyB;IAClD,sBAAsB,EAAE,wBAAwB;IAChD,yBAAyB,EAAE,2BAA2B;IACtD,wBAAwB,EAAE,0BAA0B;IACpD,0BAA0B,EAAE,4BAA4B;IACxD,sBAAsB,EAAE,wBAAwB;IAChD,iBAAiB,EAAE,mBAAmB;IACtC,2BAA2B,EAAE,6BAA6B;IAC1D,yCAAyC,EAAE,2CAA2C;IACtF,OAAO;IACP,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,qBAAqB,EAAE,uBAAuB;IAC9C,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,OAAO;IACP,iBAAiB,EAAE,mBAAmB;IACtC,oBAAoB,EAAE,sBAAsB;IAC5C,WAAW;IACX,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,qBAAqB,EAAE,uBAAuB;IAC9C,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,oBAAoB,EAAE,sBAAsB;IAC5C,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,wBAAwB,EAAE,0BAA0B;IACpD,iEAAiE;IACjE,iBAAiB,EAAE,oCAAoC;IACvD,eAAe,EAAE,kCAAkC;IACnD,wBAAwB,EAAE,6BAA6B;IACvD,wBAAwB,EAAE,6BAA6B;IACvD,wBAAwB,EAAE,6BAA6B;IACvD,wEAAwE;IACxE,+DAA+D;IAC/D,yBAAyB,EAAE,uCAAuC;IAClE,yBAAyB,EAAE,uCAAuC;IAClE,yBAAyB,EAAE,uCAAuC;IAClE,wCAAwC,EACpC,sDAAsD;IAC1D,gCAAgC,EAAE,8CAA8C;IAChF,iFAAiF;IACjF,wBAAwB,EAAE,6BAA6B;IACvD,+BAA+B,EAAE,oCAAoC;CACxE,CAAC"}
1
+ {"version":3,"file":"topics.js","sourceRoot":"","sources":["../../../src/kafka/topics.ts"],"names":[],"mappings":"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"}
@@ -15,5 +15,6 @@ export const SERVICE_CONSTS = {
15
15
  NEWSFEED_SERVICE: { name: 'newsfeed-service', port: 3015 },
16
16
  RESPONSE_TRACKING_SERVICE: { name: 'response-tracking-service', port: 3016 },
17
17
  PARTNER_SERVICE: { name: 'partner-service', port: 3017 },
18
+ SUPPORT_SERVICE: { name: 'support-service', port: 3018 },
18
19
  };
19
20
  //# sourceMappingURL=service.const.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.const.js","sourceRoot":"","sources":["../../../../../src/modules/common/constants/service.const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;IAClD,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,EAAE;IAClE,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1D,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,EAAE;IAClE,wBAAwB,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1E,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;IACxD,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE;IACtD,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;IAClD,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;IAClD,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;IACxD,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1D,yBAAyB,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,IAAI,EAAE;IAC5E,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;CAC3D,CAAC"}
1
+ {"version":3,"file":"service.const.js","sourceRoot":"","sources":["../../../../../src/modules/common/constants/service.const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;IAClD,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,EAAE;IAClE,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1D,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,EAAE;IAClE,wBAAwB,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1E,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;IAChD,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;IACxD,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE;IACtD,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;IAClD,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;IAClD,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;IACxD,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1D,yBAAyB,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,IAAI,EAAE;IAC5E,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;IACxD,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;CAC3D,CAAC"}
@@ -26,6 +26,32 @@ export const PERMISSIONS_DATA = [
26
26
  PermissionActions.MANAGE_PARTNER_MEMBERSHIP
27
27
  ]
28
28
  },
29
+ {
30
+ module: PermissionsModule.SUPPORT,
31
+ actions: [
32
+ PermissionActions.CREATE_SUPPORT_TICKET,
33
+ PermissionActions.READ_SUPPORT_TICKET,
34
+ PermissionActions.UPDATE_SUPPORT_TICKET,
35
+ PermissionActions.ASSIGN_SUPPORT_TICKET,
36
+ PermissionActions.REPLY_SUPPORT_TICKET,
37
+ PermissionActions.NOTE_SUPPORT_TICKET,
38
+ PermissionActions.CHANGE_STATUS_SUPPORT_TICKET,
39
+ PermissionActions.CHANGE_PRIORITY_SUPPORT_TICKET,
40
+ PermissionActions.CLOSE_SUPPORT_TICKET,
41
+ PermissionActions.REOPEN_SUPPORT_TICKET,
42
+ PermissionActions.READ_SUPPORT_FEEDBACK,
43
+ PermissionActions.REVIEW_SUPPORT_FEEDBACK,
44
+ PermissionActions.RESPOND_SUPPORT_FEEDBACK,
45
+ PermissionActions.CONVERT_SUPPORT_FEEDBACK,
46
+ PermissionActions.MANAGE_SUPPORT_QUEUE,
47
+ PermissionActions.MANAGE_SUPPORT_TEAM,
48
+ PermissionActions.MANAGE_SUPPORT_SLA,
49
+ PermissionActions.MANAGE_SUPPORT_CONFIGURATION,
50
+ PermissionActions.READ_SUPPORT_REPORT,
51
+ PermissionActions.READ_SUPPORT_SYNC,
52
+ PermissionActions.MANAGE_SUPPORT_SYNC
53
+ ]
54
+ },
29
55
  {
30
56
  module: PermissionsModule.CONTROL_CENTRE,
31
57
  actions: [
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.data.js","sourceRoot":"","sources":["../../../../../src/modules/permission/data/permissions.data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.data.js","sourceRoot":"","sources":["../../../../../src/modules/permission/data/permissions.data.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,46 @@ export var PermissionActions;
32
32
  // URL and a coverage rule.
33
33
  PermissionActions["READ_PARTNER_MEMBERSHIP"] = "read:partner-membership";
34
34
  PermissionActions["MANAGE_PARTNER_MEMBERSHIP"] = "manage:partner-membership";
35
+ // Support: working a ticket. Deliberately fine-grained, because the person
36
+ // allowed to reply to a customer is not always the person allowed to
37
+ // reassign their colleague's work or to close a ticket on their behalf.
38
+ //
39
+ // NOTE ON NAMING: the platform convention is verb:resource, so these read
40
+ // CREATE_SUPPORT_TICKET / 'create:support-ticket' rather than the
41
+ // SUPPORT_TICKET_CREATE form used in some external specifications. The
42
+ // existing convention wins - PermissionGuard matches on the string value,
43
+ // and one inconsistent family would be permanently confusing.
44
+ PermissionActions["CREATE_SUPPORT_TICKET"] = "create:support-ticket";
45
+ PermissionActions["READ_SUPPORT_TICKET"] = "read:support-ticket";
46
+ PermissionActions["UPDATE_SUPPORT_TICKET"] = "update:support-ticket";
47
+ PermissionActions["ASSIGN_SUPPORT_TICKET"] = "assign:support-ticket";
48
+ PermissionActions["REPLY_SUPPORT_TICKET"] = "reply:support-ticket";
49
+ // Writing an internal note is its own permission: notes are agent-to-agent
50
+ // and are never shown to a customer, so the ability to write one is the
51
+ // ability to write in a place the customer cannot see.
52
+ PermissionActions["NOTE_SUPPORT_TICKET"] = "note:support-ticket";
53
+ PermissionActions["CHANGE_STATUS_SUPPORT_TICKET"] = "change-status:support-ticket";
54
+ PermissionActions["CHANGE_PRIORITY_SUPPORT_TICKET"] = "change-priority:support-ticket";
55
+ PermissionActions["CLOSE_SUPPORT_TICKET"] = "close:support-ticket";
56
+ PermissionActions["REOPEN_SUPPORT_TICKET"] = "reopen:support-ticket";
57
+ // Support: customer feedback, which is a separate domain with separate
58
+ // permissions - reading what customers think of the service is a different
59
+ // grant from working their support tickets.
60
+ PermissionActions["READ_SUPPORT_FEEDBACK"] = "read:support-feedback";
61
+ PermissionActions["REVIEW_SUPPORT_FEEDBACK"] = "review:support-feedback";
62
+ PermissionActions["RESPOND_SUPPORT_FEEDBACK"] = "respond:support-feedback";
63
+ PermissionActions["CONVERT_SUPPORT_FEEDBACK"] = "convert:support-feedback";
64
+ // Support: configuration and operations.
65
+ PermissionActions["MANAGE_SUPPORT_QUEUE"] = "manage:support-queue";
66
+ PermissionActions["MANAGE_SUPPORT_TEAM"] = "manage:support-team";
67
+ PermissionActions["MANAGE_SUPPORT_SLA"] = "manage:support-sla";
68
+ PermissionActions["MANAGE_SUPPORT_CONFIGURATION"] = "manage:support-configuration";
69
+ PermissionActions["READ_SUPPORT_REPORT"] = "read:support-report";
70
+ PermissionActions["READ_SUPPORT_SYNC"] = "read:support-sync";
71
+ // Retrying or reconciling a synchronization row re-contacts the helpdesk and
72
+ // can re-send a customer-visible reply, so it is kept apart from reading the
73
+ // dashboard that shows the failures.
74
+ PermissionActions["MANAGE_SUPPORT_SYNC"] = "manage:support-sync";
35
75
  // Module: ControlCentre
36
76
  PermissionActions["CREATE_CONTROL_CENTRE"] = "create:control-centre";
37
77
  PermissionActions["READ_CONTROL_CENTRE"] = "read:control-centre";
@@ -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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"}
@@ -9,5 +9,6 @@ export var PermissionsModule;
9
9
  PermissionsModule["RESPONSE_UNIT"] = "Response Unit";
10
10
  PermissionsModule["BILLING"] = "Billing";
11
11
  PermissionsModule["NEWSFEED"] = "Newsfeed";
12
+ PermissionsModule["SUPPORT"] = "Support";
12
13
  })(PermissionsModule || (PermissionsModule = {}));
13
14
  //# sourceMappingURL=permissions-module.enum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions-module.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permissions-module.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAUX;AAVD,WAAY,iBAAiB;IACzB,kDAA6B,CAAA;IAC7B,wCAAmB,CAAA;IACnB,sDAAiC,CAAA;IACjC,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,2CAAsB,CAAA;IACtB,oDAA+B,CAAA;IAC/B,wCAAmB,CAAA;IACnB,0CAAqB,CAAA;AACzB,CAAC,EAVW,iBAAiB,KAAjB,iBAAiB,QAU5B"}
1
+ {"version":3,"file":"permissions-module.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permissions-module.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAWX;AAXD,WAAY,iBAAiB;IACzB,kDAA6B,CAAA;IAC7B,wCAAmB,CAAA;IACnB,sDAAiC,CAAA;IACjC,kCAAa,CAAA;IACb,kCAAa,CAAA;IACb,2CAAsB,CAAA;IACtB,oDAA+B,CAAA;IAC/B,wCAAmB,CAAA;IACnB,0CAAqB,CAAA;IACrB,wCAAmB,CAAA;AACvB,CAAC,EAXW,iBAAiB,KAAjB,iBAAiB,QAW5B"}