@d19n/youfibre-odin-sdk 2.0.345 → 2.0.347
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.
- package/README.md +3 -1
- package/dist/api-sdk-v2/AccountApi.d.ts +4 -0
- package/dist/api-sdk-v2/AccountApi.js +12 -0
- package/dist/api-sdk-v2/CaseApi.d.ts +2 -0
- package/dist/api-sdk-v2/CaseApi.js +6 -0
- package/dist/api-sdk-v2/ContactApi.d.ts +2 -0
- package/dist/api-sdk-v2/ContactApi.js +6 -0
- package/dist/api-sdk-v2/FrustrationEventApi.d.ts +50 -0
- package/dist/api-sdk-v2/FrustrationEventApi.js +161 -0
- package/dist/api-sdk-v2/FrustrationScoreApi.d.ts +54 -0
- package/dist/api-sdk-v2/FrustrationScoreApi.js +173 -0
- package/dist/db-sdk-v2/AccountDb.d.ts +4 -0
- package/dist/db-sdk-v2/AccountDb.js +12 -0
- package/dist/db-sdk-v2/CaseDb.d.ts +2 -0
- package/dist/db-sdk-v2/CaseDb.js +6 -0
- package/dist/db-sdk-v2/ContactDb.d.ts +2 -0
- package/dist/db-sdk-v2/ContactDb.js +6 -0
- package/dist/db-sdk-v2/FrustrationEventDb.d.ts +122 -0
- package/dist/db-sdk-v2/FrustrationEventDb.js +210 -0
- package/dist/db-sdk-v2/FrustrationScoreDb.d.ts +126 -0
- package/dist/db-sdk-v2/FrustrationScoreDb.js +222 -0
- package/dist/entities-v2/Account.d.ts +6 -0
- package/dist/entities-v2/Case.d.ts +87 -4
- package/dist/entities-v2/Case.js +47 -5
- package/dist/entities-v2/Contact.d.ts +3 -0
- package/dist/entities-v2/Conversation.d.ts +6 -0
- package/dist/entities-v2/Conversation.js +6 -0
- package/dist/entities-v2/FrustrationEvent.d.ts +222 -0
- package/dist/entities-v2/FrustrationEvent.js +160 -0
- package/dist/entities-v2/FrustrationScore.d.ts +171 -0
- package/dist/entities-v2/FrustrationScore.js +123 -0
- package/package.json +1 -1
|
@@ -24,6 +24,8 @@ import { AddressProperties } from './Address';
|
|
|
24
24
|
import { MobileConfigurationProperties } from './MobileConfiguration';
|
|
25
25
|
import { FileProperties } from './File';
|
|
26
26
|
import { DataIssueProperties } from './DataIssue';
|
|
27
|
+
import { FrustrationScoreProperties } from './FrustrationScore';
|
|
28
|
+
import { FrustrationEventProperties } from './FrustrationEvent';
|
|
27
29
|
/**
|
|
28
30
|
* Available types for Account records
|
|
29
31
|
*/
|
|
@@ -794,6 +796,10 @@ export declare class Account extends OdinRecord<AccountProperties> {
|
|
|
794
796
|
File: OdinLink<LinkedOdinRecord<FileProperties>>;
|
|
795
797
|
/** Linked DataIssue records (DataIssue__Account) */
|
|
796
798
|
DataIssue: OdinLink<LinkedOdinRecord<DataIssueProperties>>;
|
|
799
|
+
/** Linked FrustrationScore records (FrustrationScore__Account) */
|
|
800
|
+
FrustrationScore: OdinLink<LinkedOdinRecord<FrustrationScoreProperties>>;
|
|
801
|
+
/** Linked FrustrationEvent records (FrustrationEvent__Account) */
|
|
802
|
+
FrustrationEvent: OdinLink<LinkedOdinRecord<FrustrationEventProperties>>;
|
|
797
803
|
}
|
|
798
804
|
/**
|
|
799
805
|
* RabbitMQ routing keys for Account events
|
|
@@ -37,6 +37,7 @@ import { CallProperties } from './Call';
|
|
|
37
37
|
import { QaReportProperties } from './QaReport';
|
|
38
38
|
import { QaEvaluationProperties } from './QaEvaluation';
|
|
39
39
|
import { CoachingSessionProperties } from './CoachingSession';
|
|
40
|
+
import { FrustrationScoreProperties } from './FrustrationScore';
|
|
40
41
|
/**
|
|
41
42
|
* Available types for Case records
|
|
42
43
|
*/
|
|
@@ -348,6 +349,7 @@ export declare enum CaseProblem {
|
|
|
348
349
|
* - `CUSTOMER_APP` - Customer App
|
|
349
350
|
* - `CUSTOMER_PORTAL` - Customer Portal
|
|
350
351
|
* - `EMAIL` - Email
|
|
352
|
+
* - `FACEBOOK_COMMENT` - Facebook comment
|
|
351
353
|
* - `FACEBOOK_MESSENGER` - Facebook Messenger
|
|
352
354
|
* - `IN_APP_CHAT` - In-App Chat
|
|
353
355
|
* - `INSTAGRAM_DM` - Instagram DM
|
|
@@ -358,14 +360,14 @@ export declare enum CaseProblem {
|
|
|
358
360
|
* - `TWITTER_X_DM` - Twitter/X DM
|
|
359
361
|
* - `TWITTER_X_MENTION` - Twitter/X Mention
|
|
360
362
|
* - `WEB_CHAT` - Web chat
|
|
361
|
-
* -
|
|
362
|
-
* - ... and 1 more
|
|
363
|
+
* - ... and 2 more
|
|
363
364
|
*/
|
|
364
365
|
export declare enum CaseChannel {
|
|
365
366
|
CALL = "CALL",
|
|
366
367
|
CUSTOMER_APP = "CUSTOMER_APP",
|
|
367
368
|
CUSTOMER_PORTAL = "CUSTOMER_PORTAL",
|
|
368
369
|
EMAIL = "EMAIL",
|
|
370
|
+
FACEBOOK_COMMENT = "FACEBOOK_COMMENT",
|
|
369
371
|
FACEBOOK_MESSENGER = "FACEBOOK_MESSENGER",
|
|
370
372
|
IN_APP_CHAT = "IN_APP_CHAT",
|
|
371
373
|
INSTAGRAM_DM = "INSTAGRAM_DM",
|
|
@@ -435,7 +437,7 @@ export declare enum CaseCategory {
|
|
|
435
437
|
* - `COPY_OF_INVOICE` - Copy of Invoice
|
|
436
438
|
* - `CUSTOMER_DEVICE_ISSUE` - Customer Device Issue
|
|
437
439
|
* - `DATA_SUBJECT_ACCESS_REQUEST` - Data Subject Access Request
|
|
438
|
-
* - ... and
|
|
440
|
+
* - ... and 42 more
|
|
439
441
|
*/
|
|
440
442
|
export declare enum CaseSubCategory {
|
|
441
443
|
AMEND_BILLING_DATE = "AMEND_BILLING_DATE",
|
|
@@ -458,6 +460,7 @@ export declare enum CaseSubCategory {
|
|
|
458
460
|
EQUIPMENT_RETURN_REFUND = "EQUIPMENT_RETURN_REFUND",
|
|
459
461
|
ESCALATED_COMPLAINT = "ESCALATED_COMPLAINT",
|
|
460
462
|
ETF_CUSTOMER_LEAVING_YF = "ETF_CUSTOMER_LEAVING",
|
|
463
|
+
FRUSTRATION_OUTREACH = "FRUSTRATION_OUTREACH",
|
|
461
464
|
GDPR_DATA_BREACH = "GDPR_DATA_BREACH",
|
|
462
465
|
INACTIVE_CHAT_NO_CUSTOMER_RESPONSE = "INACTIVE_CHAT_NO_CUSTOMER_RESPONSE",
|
|
463
466
|
INSTALL_APPOINTMENT = "INSTALL_APPOINTMENT",
|
|
@@ -1041,6 +1044,38 @@ export declare enum CaseEnquirySubCategory {
|
|
|
1041
1044
|
WI_FI_COVERAGE_SIGNAL_INCL_MESH_BOOSTER = "WIFI_COVERAGE_SIGNAL",
|
|
1042
1045
|
YOU_FIBRE_APP_OTHER = "YOUFIBRE_APP_OTHER"
|
|
1043
1046
|
}
|
|
1047
|
+
/**
|
|
1048
|
+
* Valid values for Case.FrustrationBand
|
|
1049
|
+
*
|
|
1050
|
+
* A copy of the Account's FrustrationScore stage when the Case was created or last refreshed. Written only by the frustration engine.
|
|
1051
|
+
*
|
|
1052
|
+
* @remarks Available options:
|
|
1053
|
+
* - `CRITICAL` - Critical
|
|
1054
|
+
* - `GREEN` - Green
|
|
1055
|
+
* - `ORANGE` - Orange
|
|
1056
|
+
* - `RED` - Red
|
|
1057
|
+
* - `YELLOW` - Yellow
|
|
1058
|
+
*/
|
|
1059
|
+
export declare enum CaseFrustrationBand {
|
|
1060
|
+
CRITICAL = "CRITICAL",
|
|
1061
|
+
GREEN = "GREEN",
|
|
1062
|
+
ORANGE = "ORANGE",
|
|
1063
|
+
RED = "RED",
|
|
1064
|
+
YELLOW = "YELLOW"
|
|
1065
|
+
}
|
|
1066
|
+
/**
|
|
1067
|
+
* Valid values for Case.SaveContactMethod
|
|
1068
|
+
*
|
|
1069
|
+
* How an OTS/recontract retention save was made — call or email. Set only when RetentionOutcome is SAVED.
|
|
1070
|
+
*
|
|
1071
|
+
* @remarks Available options:
|
|
1072
|
+
* - `CALL` - Call
|
|
1073
|
+
* - `EMAIL` - Email
|
|
1074
|
+
*/
|
|
1075
|
+
export declare enum CaseSaveContactMethod {
|
|
1076
|
+
CALL = "CALL",
|
|
1077
|
+
EMAIL = "EMAIL"
|
|
1078
|
+
}
|
|
1044
1079
|
/**
|
|
1045
1080
|
* Property keys for Case
|
|
1046
1081
|
* Use these constants instead of string literals for type safety
|
|
@@ -1247,7 +1282,13 @@ export declare enum CasePropertyKeys {
|
|
|
1247
1282
|
/** Why the customer contacted us, top level. 20-value business taxonomy (Categories.xlsx, 2026-09-11). Option position is PRECEDENCE, not display order — lowest number wins when several could apply. Classified by the Qwen categoriser (CASES-1862) and overridable by an agent. Distinct from Category, which stays the outage/retention operational discriminator. */
|
|
1248
1283
|
EnquiryCategory = "EnquiryCategory",
|
|
1249
1284
|
/** Why the customer contacted us, specific. 119-value business taxonomy (Categories.xlsx, 2026-09-11); every label is globally unique, so this value alone determines EnquiryCategory. Each category carries an "- other" catch-all so "nothing specific fits" has a defined answer. Parentage lives in the form action's enumOptionFilter (CASES-1861), not on the column. */
|
|
1250
|
-
EnquirySubCategory = "EnquirySubCategory"
|
|
1285
|
+
EnquirySubCategory = "EnquirySubCategory",
|
|
1286
|
+
/** A copy of the Account's FrustrationScore.Score when the Case was created or last refreshed. Written only by the frustration engine; the live value is on the FrustrationScore record. */
|
|
1287
|
+
FrustrationScore = "FrustrationScore",
|
|
1288
|
+
/** A copy of the Account's FrustrationScore stage when the Case was created or last refreshed. Written only by the frustration engine. */
|
|
1289
|
+
FrustrationBand = "FrustrationBand",
|
|
1290
|
+
/** How an OTS/recontract retention save was made — call or email. Set only when RetentionOutcome is SAVED. */
|
|
1291
|
+
SaveContactMethod = "SaveContactMethod"
|
|
1251
1292
|
}
|
|
1252
1293
|
/**
|
|
1253
1294
|
* Properties for Case records
|
|
@@ -1826,6 +1867,26 @@ export interface CaseProperties {
|
|
|
1826
1867
|
* @enum {CaseEnquirySubCategory}
|
|
1827
1868
|
*/
|
|
1828
1869
|
EnquirySubCategory: CaseEnquirySubCategory;
|
|
1870
|
+
/** A copy of the Account's FrustrationScore.Score when the Case was created or last refreshed. Written only by the frustration engine; the live value is on the FrustrationScore record.
|
|
1871
|
+
*
|
|
1872
|
+
* @type {NUMBER}
|
|
1873
|
+
* @default
|
|
1874
|
+
*/
|
|
1875
|
+
FrustrationScore: number;
|
|
1876
|
+
/** A copy of the Account's FrustrationScore stage when the Case was created or last refreshed. Written only by the frustration engine.
|
|
1877
|
+
*
|
|
1878
|
+
* @type {ENUM}
|
|
1879
|
+
* @default
|
|
1880
|
+
* @enum {CaseFrustrationBand}
|
|
1881
|
+
*/
|
|
1882
|
+
FrustrationBand: CaseFrustrationBand;
|
|
1883
|
+
/** How an OTS/recontract retention save was made — call or email. Set only when RetentionOutcome is SAVED.
|
|
1884
|
+
*
|
|
1885
|
+
* @type {ENUM}
|
|
1886
|
+
* @default
|
|
1887
|
+
* @enum {CaseSaveContactMethod}
|
|
1888
|
+
*/
|
|
1889
|
+
SaveContactMethod: CaseSaveContactMethod;
|
|
1829
1890
|
}
|
|
1830
1891
|
/**
|
|
1831
1892
|
* Properties for OUTAGE Case records
|
|
@@ -2404,6 +2465,26 @@ export interface OutageCaseProperties {
|
|
|
2404
2465
|
* @enum {CaseEnquirySubCategory}
|
|
2405
2466
|
*/
|
|
2406
2467
|
EnquirySubCategory: CaseEnquirySubCategory;
|
|
2468
|
+
/** A copy of the Account's FrustrationScore.Score when the Case was created or last refreshed. Written only by the frustration engine; the live value is on the FrustrationScore record.
|
|
2469
|
+
*
|
|
2470
|
+
* @type {NUMBER}
|
|
2471
|
+
* @default
|
|
2472
|
+
*/
|
|
2473
|
+
FrustrationScore: number;
|
|
2474
|
+
/** A copy of the Account's FrustrationScore stage when the Case was created or last refreshed. Written only by the frustration engine.
|
|
2475
|
+
*
|
|
2476
|
+
* @type {ENUM}
|
|
2477
|
+
* @default
|
|
2478
|
+
* @enum {CaseFrustrationBand}
|
|
2479
|
+
*/
|
|
2480
|
+
FrustrationBand: CaseFrustrationBand;
|
|
2481
|
+
/** How an OTS/recontract retention save was made — call or email. Set only when RetentionOutcome is SAVED.
|
|
2482
|
+
*
|
|
2483
|
+
* @type {ENUM}
|
|
2484
|
+
* @default
|
|
2485
|
+
* @enum {CaseSaveContactMethod}
|
|
2486
|
+
*/
|
|
2487
|
+
SaveContactMethod: CaseSaveContactMethod;
|
|
2407
2488
|
}
|
|
2408
2489
|
/**
|
|
2409
2490
|
* Case entity from SupportModule
|
|
@@ -2476,6 +2557,8 @@ export declare class Case extends OdinRecord<CaseProperties> {
|
|
|
2476
2557
|
QaEvaluation: OdinLink<LinkedOdinRecord<QaEvaluationProperties>>;
|
|
2477
2558
|
/** Linked CoachingSession records (Case__CoachingSession) */
|
|
2478
2559
|
CoachingSession: OdinLink<LinkedOdinRecord<CoachingSessionProperties>>;
|
|
2560
|
+
/** Linked FrustrationScore records (FrustrationScore__Case) */
|
|
2561
|
+
FrustrationScore: OdinLink<LinkedOdinRecord<FrustrationScoreProperties>>;
|
|
2479
2562
|
}
|
|
2480
2563
|
/**
|
|
2481
2564
|
* RabbitMQ routing keys for Case events
|
package/dist/entities-v2/Case.js
CHANGED
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
* Generated from Odin schema definition
|
|
13
13
|
*/
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
16
|
-
exports.ROUTING_KEY_LINK_CASE_COACHING_SESSION_DELETED = exports.ROUTING_KEY_LINK_CASE_COACHING_SESSION_CREATED = exports.ROUTING_KEY_LINK_CASE_QA_EVALUATION_DELETED = exports.ROUTING_KEY_LINK_CASE_QA_EVALUATION_CREATED = exports.ROUTING_KEY_LINK_CASE_QA_REPORT_DELETED = exports.ROUTING_KEY_LINK_CASE_QA_REPORT_CREATED = exports.ROUTING_KEY_LINK_OUTBOUND_DIAL_SESSION_CASE_DELETED = exports.ROUTING_KEY_LINK_OUTBOUND_DIAL_SESSION_CASE_CREATED = exports.ROUTING_KEY_LINK_CASE_ONE_TOUCH_SWITCH_DELETED = exports.ROUTING_KEY_LINK_CASE_ONE_TOUCH_SWITCH_CREATED = exports.ROUTING_KEY_LINK_CASE_CASE_DELETED = exports.ROUTING_KEY_LINK_CASE_CASE_CREATED = exports.ROUTING_KEY_LINK_CASE_SMS_MESSAGE_DELETED = exports.ROUTING_KEY_LINK_CASE_SMS_MESSAGE_CREATED = exports.ROUTING_KEY_LINK_CASE_USER_DELETED = exports.ROUTING_KEY_LINK_CASE_USER_CREATED = exports.ROUTING_KEY_LINK_CASE_CONTRACT_BUY_OUT_DELETED = exports.ROUTING_KEY_LINK_CASE_CONTRACT_BUY_OUT_CREATED = exports.ROUTING_KEY_LINK_CASE_QUEUE_CHANGE_DELETED = exports.ROUTING_KEY_LINK_CASE_QUEUE_CHANGE_CREATED = exports.ROUTING_KEY_LINK_CASE_ADDRESS_DELETED = exports.ROUTING_KEY_LINK_CASE_ADDRESS_CREATED = exports.ROUTING_KEY_LINK_CASE_WORK_ORDER_DELETED = exports.ROUTING_KEY_LINK_CASE_WORK_ORDER_CREATED = exports.ROUTING_KEY_LINK_CASE_EMAIL_DELETED = exports.ROUTING_KEY_LINK_CASE_EMAIL_CREATED = exports.ROUTING_KEY_LINK_CASE_CONTACT_DELETED = exports.ROUTING_KEY_LINK_CASE_CONTACT_CREATED = exports.ROUTING_KEY_LINK_CASE_PUSH_NOTIFICATION_DELETED = exports.ROUTING_KEY_LINK_CASE_PUSH_NOTIFICATION_CREATED = exports.ROUTING_KEY_LINK_CASE_ORDER_DELETED = exports.ROUTING_KEY_LINK_CASE_ORDER_CREATED = exports.ROUTING_KEY_LINK_CASE_CONVERSATION_DELETED = exports.ROUTING_KEY_LINK_CASE_CONVERSATION_CREATED = exports.ROUTING_KEY_LINK_CASE_TEAM_DELETED = exports.ROUTING_KEY_LINK_CASE_TEAM_CREATED = exports.ROUTING_KEY_LINK_CASE_NOTE_DELETED = exports.ROUTING_KEY_LINK_CASE_NOTE_CREATED = exports.ROUTING_KEY_LINK_CASE_FILE_DELETED = exports.ROUTING_KEY_LINK_CASE_FILE_CREATED = exports.ROUTING_KEY_LINK_CASE_CASE_ACTION_DELETED = exports.ROUTING_KEY_LINK_CASE_CASE_ACTION_CREATED = exports.ROUTING_KEY_LINK_CASE_ACTIVITY_LOG_DELETED = void 0;
|
|
15
|
+
exports.ROUTING_KEY_CASE_OUTAGE_UPDATED = exports.ROUTING_KEY_CASE_OUTAGE_CREATED = exports.ROUTING_KEY_CASE_DEFAULT_DELETED = exports.ROUTING_KEY_CASE_DEFAULT_UPDATED = exports.ROUTING_KEY_CASE_DEFAULT_CREATED = exports.ROUTING_KEY_CASE_DELETED = exports.ROUTING_KEY_CASE_UPDATED = exports.ROUTING_KEY_CASE_CREATED = exports.Case = exports.CasePropertyKeys = exports.CaseSaveContactMethod = exports.CaseFrustrationBand = exports.CaseEnquirySubCategory = exports.CaseEnquiryCategory = exports.CaseDeprecated = exports.CaseRetentionOutcome = exports.CaseVulnerableCustomer = exports.CaseAutoResolutionStatus = exports.CaseLastDialOutcome = exports.CaseEscalationReason = exports.CaseOmbudsmanReason = exports.CaseSource = exports.CaseReasonForReview = exports.CaseImpact = exports.CaseCsatReason = exports.CaseBusinessArea = exports.CaseRetentionOffer = exports.CaseSla = exports.CaseReasonForLeaving = exports.CaseDpaCustomerType = exports.CaseDpaCustomerCategory = exports.CaseConversationStatus = exports.CaseBlockedReason = exports.CaseSubCategory = exports.CaseCategory = exports.CaseChannel = exports.CaseProblem = exports.CasePrimaryExceptionReason = exports.CasePrimaryException = exports.CaseFormalComplaint = exports.CaseOrigin = exports.CaseProviders = exports.CaseCsatResolutionReason = exports.CaseComplaint = exports.CaseCsatAgentReason = exports.OutageCaseStageKeys = exports.OutageCaseStageNames = exports.DefaultCaseStageKeys = exports.DefaultCaseStageNames = exports.CaseEntityTypes = void 0;
|
|
16
|
+
exports.ROUTING_KEY_LINK_CASE_COACHING_SESSION_DELETED = exports.ROUTING_KEY_LINK_CASE_COACHING_SESSION_CREATED = exports.ROUTING_KEY_LINK_CASE_QA_EVALUATION_DELETED = exports.ROUTING_KEY_LINK_CASE_QA_EVALUATION_CREATED = exports.ROUTING_KEY_LINK_CASE_QA_REPORT_DELETED = exports.ROUTING_KEY_LINK_CASE_QA_REPORT_CREATED = exports.ROUTING_KEY_LINK_OUTBOUND_DIAL_SESSION_CASE_DELETED = exports.ROUTING_KEY_LINK_OUTBOUND_DIAL_SESSION_CASE_CREATED = exports.ROUTING_KEY_LINK_CASE_ONE_TOUCH_SWITCH_DELETED = exports.ROUTING_KEY_LINK_CASE_ONE_TOUCH_SWITCH_CREATED = exports.ROUTING_KEY_LINK_CASE_CASE_DELETED = exports.ROUTING_KEY_LINK_CASE_CASE_CREATED = exports.ROUTING_KEY_LINK_CASE_SMS_MESSAGE_DELETED = exports.ROUTING_KEY_LINK_CASE_SMS_MESSAGE_CREATED = exports.ROUTING_KEY_LINK_CASE_USER_DELETED = exports.ROUTING_KEY_LINK_CASE_USER_CREATED = exports.ROUTING_KEY_LINK_CASE_CONTRACT_BUY_OUT_DELETED = exports.ROUTING_KEY_LINK_CASE_CONTRACT_BUY_OUT_CREATED = exports.ROUTING_KEY_LINK_CASE_QUEUE_CHANGE_DELETED = exports.ROUTING_KEY_LINK_CASE_QUEUE_CHANGE_CREATED = exports.ROUTING_KEY_LINK_CASE_ADDRESS_DELETED = exports.ROUTING_KEY_LINK_CASE_ADDRESS_CREATED = exports.ROUTING_KEY_LINK_CASE_WORK_ORDER_DELETED = exports.ROUTING_KEY_LINK_CASE_WORK_ORDER_CREATED = exports.ROUTING_KEY_LINK_CASE_EMAIL_DELETED = exports.ROUTING_KEY_LINK_CASE_EMAIL_CREATED = exports.ROUTING_KEY_LINK_CASE_CONTACT_DELETED = exports.ROUTING_KEY_LINK_CASE_CONTACT_CREATED = exports.ROUTING_KEY_LINK_CASE_PUSH_NOTIFICATION_DELETED = exports.ROUTING_KEY_LINK_CASE_PUSH_NOTIFICATION_CREATED = exports.ROUTING_KEY_LINK_CASE_ORDER_DELETED = exports.ROUTING_KEY_LINK_CASE_ORDER_CREATED = exports.ROUTING_KEY_LINK_CASE_CONVERSATION_DELETED = exports.ROUTING_KEY_LINK_CASE_CONVERSATION_CREATED = exports.ROUTING_KEY_LINK_CASE_TEAM_DELETED = exports.ROUTING_KEY_LINK_CASE_TEAM_CREATED = exports.ROUTING_KEY_LINK_CASE_NOTE_DELETED = exports.ROUTING_KEY_LINK_CASE_NOTE_CREATED = exports.ROUTING_KEY_LINK_CASE_FILE_DELETED = exports.ROUTING_KEY_LINK_CASE_FILE_CREATED = exports.ROUTING_KEY_LINK_CASE_CASE_ACTION_DELETED = exports.ROUTING_KEY_LINK_CASE_CASE_ACTION_CREATED = exports.ROUTING_KEY_LINK_CASE_ACTIVITY_LOG_DELETED = exports.ROUTING_KEY_LINK_CASE_ACTIVITY_LOG_CREATED = exports.ROUTING_KEY_CASE_OUTAGE_DELETED = void 0;
|
|
17
17
|
const core_1 = require("@d19n/odin-types/dist/core");
|
|
18
18
|
/**
|
|
19
19
|
* Available types for Case records
|
|
@@ -340,6 +340,7 @@ var CaseProblem;
|
|
|
340
340
|
* - `CUSTOMER_APP` - Customer App
|
|
341
341
|
* - `CUSTOMER_PORTAL` - Customer Portal
|
|
342
342
|
* - `EMAIL` - Email
|
|
343
|
+
* - `FACEBOOK_COMMENT` - Facebook comment
|
|
343
344
|
* - `FACEBOOK_MESSENGER` - Facebook Messenger
|
|
344
345
|
* - `IN_APP_CHAT` - In-App Chat
|
|
345
346
|
* - `INSTAGRAM_DM` - Instagram DM
|
|
@@ -350,8 +351,7 @@ var CaseProblem;
|
|
|
350
351
|
* - `TWITTER_X_DM` - Twitter/X DM
|
|
351
352
|
* - `TWITTER_X_MENTION` - Twitter/X Mention
|
|
352
353
|
* - `WEB_CHAT` - Web chat
|
|
353
|
-
* -
|
|
354
|
-
* - ... and 1 more
|
|
354
|
+
* - ... and 2 more
|
|
355
355
|
*/
|
|
356
356
|
var CaseChannel;
|
|
357
357
|
(function (CaseChannel) {
|
|
@@ -359,6 +359,7 @@ var CaseChannel;
|
|
|
359
359
|
CaseChannel["CUSTOMER_APP"] = "CUSTOMER_APP";
|
|
360
360
|
CaseChannel["CUSTOMER_PORTAL"] = "CUSTOMER_PORTAL";
|
|
361
361
|
CaseChannel["EMAIL"] = "EMAIL";
|
|
362
|
+
CaseChannel["FACEBOOK_COMMENT"] = "FACEBOOK_COMMENT";
|
|
362
363
|
CaseChannel["FACEBOOK_MESSENGER"] = "FACEBOOK_MESSENGER";
|
|
363
364
|
CaseChannel["IN_APP_CHAT"] = "IN_APP_CHAT";
|
|
364
365
|
CaseChannel["INSTAGRAM_DM"] = "INSTAGRAM_DM";
|
|
@@ -429,7 +430,7 @@ var CaseCategory;
|
|
|
429
430
|
* - `COPY_OF_INVOICE` - Copy of Invoice
|
|
430
431
|
* - `CUSTOMER_DEVICE_ISSUE` - Customer Device Issue
|
|
431
432
|
* - `DATA_SUBJECT_ACCESS_REQUEST` - Data Subject Access Request
|
|
432
|
-
* - ... and
|
|
433
|
+
* - ... and 42 more
|
|
433
434
|
*/
|
|
434
435
|
var CaseSubCategory;
|
|
435
436
|
(function (CaseSubCategory) {
|
|
@@ -453,6 +454,7 @@ var CaseSubCategory;
|
|
|
453
454
|
CaseSubCategory["EQUIPMENT_RETURN_REFUND"] = "EQUIPMENT_RETURN_REFUND";
|
|
454
455
|
CaseSubCategory["ESCALATED_COMPLAINT"] = "ESCALATED_COMPLAINT";
|
|
455
456
|
CaseSubCategory["ETF_CUSTOMER_LEAVING_YF"] = "ETF_CUSTOMER_LEAVING";
|
|
457
|
+
CaseSubCategory["FRUSTRATION_OUTREACH"] = "FRUSTRATION_OUTREACH";
|
|
456
458
|
CaseSubCategory["GDPR_DATA_BREACH"] = "GDPR_DATA_BREACH";
|
|
457
459
|
CaseSubCategory["INACTIVE_CHAT_NO_CUSTOMER_RESPONSE"] = "INACTIVE_CHAT_NO_CUSTOMER_RESPONSE";
|
|
458
460
|
CaseSubCategory["INSTALL_APPOINTMENT"] = "INSTALL_APPOINTMENT";
|
|
@@ -1057,6 +1059,40 @@ var CaseEnquirySubCategory;
|
|
|
1057
1059
|
CaseEnquirySubCategory["WI_FI_COVERAGE_SIGNAL_INCL_MESH_BOOSTER"] = "WIFI_COVERAGE_SIGNAL";
|
|
1058
1060
|
CaseEnquirySubCategory["YOU_FIBRE_APP_OTHER"] = "YOUFIBRE_APP_OTHER";
|
|
1059
1061
|
})(CaseEnquirySubCategory = exports.CaseEnquirySubCategory || (exports.CaseEnquirySubCategory = {}));
|
|
1062
|
+
/**
|
|
1063
|
+
* Valid values for Case.FrustrationBand
|
|
1064
|
+
*
|
|
1065
|
+
* A copy of the Account's FrustrationScore stage when the Case was created or last refreshed. Written only by the frustration engine.
|
|
1066
|
+
*
|
|
1067
|
+
* @remarks Available options:
|
|
1068
|
+
* - `CRITICAL` - Critical
|
|
1069
|
+
* - `GREEN` - Green
|
|
1070
|
+
* - `ORANGE` - Orange
|
|
1071
|
+
* - `RED` - Red
|
|
1072
|
+
* - `YELLOW` - Yellow
|
|
1073
|
+
*/
|
|
1074
|
+
var CaseFrustrationBand;
|
|
1075
|
+
(function (CaseFrustrationBand) {
|
|
1076
|
+
CaseFrustrationBand["CRITICAL"] = "CRITICAL";
|
|
1077
|
+
CaseFrustrationBand["GREEN"] = "GREEN";
|
|
1078
|
+
CaseFrustrationBand["ORANGE"] = "ORANGE";
|
|
1079
|
+
CaseFrustrationBand["RED"] = "RED";
|
|
1080
|
+
CaseFrustrationBand["YELLOW"] = "YELLOW";
|
|
1081
|
+
})(CaseFrustrationBand = exports.CaseFrustrationBand || (exports.CaseFrustrationBand = {}));
|
|
1082
|
+
/**
|
|
1083
|
+
* Valid values for Case.SaveContactMethod
|
|
1084
|
+
*
|
|
1085
|
+
* How an OTS/recontract retention save was made — call or email. Set only when RetentionOutcome is SAVED.
|
|
1086
|
+
*
|
|
1087
|
+
* @remarks Available options:
|
|
1088
|
+
* - `CALL` - Call
|
|
1089
|
+
* - `EMAIL` - Email
|
|
1090
|
+
*/
|
|
1091
|
+
var CaseSaveContactMethod;
|
|
1092
|
+
(function (CaseSaveContactMethod) {
|
|
1093
|
+
CaseSaveContactMethod["CALL"] = "CALL";
|
|
1094
|
+
CaseSaveContactMethod["EMAIL"] = "EMAIL";
|
|
1095
|
+
})(CaseSaveContactMethod = exports.CaseSaveContactMethod || (exports.CaseSaveContactMethod = {}));
|
|
1060
1096
|
/**
|
|
1061
1097
|
* Property keys for Case
|
|
1062
1098
|
* Use these constants instead of string literals for type safety
|
|
@@ -1265,6 +1301,12 @@ var CasePropertyKeys;
|
|
|
1265
1301
|
CasePropertyKeys["EnquiryCategory"] = "EnquiryCategory";
|
|
1266
1302
|
/** Why the customer contacted us, specific. 119-value business taxonomy (Categories.xlsx, 2026-09-11); every label is globally unique, so this value alone determines EnquiryCategory. Each category carries an "- other" catch-all so "nothing specific fits" has a defined answer. Parentage lives in the form action's enumOptionFilter (CASES-1861), not on the column. */
|
|
1267
1303
|
CasePropertyKeys["EnquirySubCategory"] = "EnquirySubCategory";
|
|
1304
|
+
/** A copy of the Account's FrustrationScore.Score when the Case was created or last refreshed. Written only by the frustration engine; the live value is on the FrustrationScore record. */
|
|
1305
|
+
CasePropertyKeys["FrustrationScore"] = "FrustrationScore";
|
|
1306
|
+
/** A copy of the Account's FrustrationScore stage when the Case was created or last refreshed. Written only by the frustration engine. */
|
|
1307
|
+
CasePropertyKeys["FrustrationBand"] = "FrustrationBand";
|
|
1308
|
+
/** How an OTS/recontract retention save was made — call or email. Set only when RetentionOutcome is SAVED. */
|
|
1309
|
+
CasePropertyKeys["SaveContactMethod"] = "SaveContactMethod";
|
|
1268
1310
|
})(CasePropertyKeys = exports.CasePropertyKeys || (exports.CasePropertyKeys = {}));
|
|
1269
1311
|
/**
|
|
1270
1312
|
* Case entity from SupportModule
|
|
@@ -44,6 +44,7 @@ import { AffiliateCodeProperties } from './AffiliateCode';
|
|
|
44
44
|
import { OrderProperties } from './Order';
|
|
45
45
|
import { NpsSurveyProperties } from './NpsSurvey';
|
|
46
46
|
import { ContractBuyOutProperties } from './ContractBuyOut';
|
|
47
|
+
import { FrustrationScoreProperties } from './FrustrationScore';
|
|
47
48
|
/**
|
|
48
49
|
* Available types for Contact records
|
|
49
50
|
*/
|
|
@@ -838,6 +839,8 @@ export declare class Contact extends OdinRecord<ContactProperties> {
|
|
|
838
839
|
NpsSurvey: OdinLink<LinkedOdinRecord<NpsSurveyProperties>>;
|
|
839
840
|
/** Linked ContractBuyOut records (Contact__ContractBuyOut) */
|
|
840
841
|
ContractBuyOut: OdinLink<LinkedOdinRecord<ContractBuyOutProperties>>;
|
|
842
|
+
/** Linked FrustrationScore records (FrustrationScore__Contact) */
|
|
843
|
+
FrustrationScore: OdinLink<LinkedOdinRecord<FrustrationScoreProperties>>;
|
|
841
844
|
}
|
|
842
845
|
/**
|
|
843
846
|
* RabbitMQ routing keys for Contact events
|
|
@@ -29,20 +29,26 @@ export declare enum ConversationEntityTypes {
|
|
|
29
29
|
*
|
|
30
30
|
* @remarks Available options:
|
|
31
31
|
* - `WEB_CHAT` - Chat
|
|
32
|
+
* - `FACEBOOK_COMMENT` - Facebook comment
|
|
32
33
|
* - `FACEBOOK_MESSENGER` - Facebook Messenger
|
|
33
34
|
* - `IN_APP_CHAT` - In-App Chat
|
|
34
35
|
* - `INSTAGRAM_DM` - Instagram DM
|
|
35
36
|
* - `SMS`
|
|
36
37
|
* - `TRUSTPILOT_SERVICE_REVIEW` - Trustpilot Service Review
|
|
38
|
+
* - `TWITTER_X_DM` - Twitter/X DM
|
|
39
|
+
* - `TWITTER_X_MENTION` - Twitter/X mention
|
|
37
40
|
* - `WHATSAPP` - WhatsApp
|
|
38
41
|
*/
|
|
39
42
|
export declare enum ConversationChannel {
|
|
40
43
|
CHAT = "WEB_CHAT",
|
|
44
|
+
FACEBOOK_COMMENT = "FACEBOOK_COMMENT",
|
|
41
45
|
FACEBOOK_MESSENGER = "FACEBOOK_MESSENGER",
|
|
42
46
|
IN_APP_CHAT = "IN_APP_CHAT",
|
|
43
47
|
INSTAGRAM_DM = "INSTAGRAM_DM",
|
|
44
48
|
SMS = "SMS",
|
|
45
49
|
TRUSTPILOT_SERVICE_REVIEW = "TRUSTPILOT_SERVICE_REVIEW",
|
|
50
|
+
TWITTER_X_DM = "TWITTER_X_DM",
|
|
51
|
+
TWITTER_X_MENTION = "TWITTER_X_MENTION",
|
|
46
52
|
WHATS_APP = "WHATSAPP"
|
|
47
53
|
}
|
|
48
54
|
/**
|
|
@@ -29,21 +29,27 @@ var ConversationEntityTypes;
|
|
|
29
29
|
*
|
|
30
30
|
* @remarks Available options:
|
|
31
31
|
* - `WEB_CHAT` - Chat
|
|
32
|
+
* - `FACEBOOK_COMMENT` - Facebook comment
|
|
32
33
|
* - `FACEBOOK_MESSENGER` - Facebook Messenger
|
|
33
34
|
* - `IN_APP_CHAT` - In-App Chat
|
|
34
35
|
* - `INSTAGRAM_DM` - Instagram DM
|
|
35
36
|
* - `SMS`
|
|
36
37
|
* - `TRUSTPILOT_SERVICE_REVIEW` - Trustpilot Service Review
|
|
38
|
+
* - `TWITTER_X_DM` - Twitter/X DM
|
|
39
|
+
* - `TWITTER_X_MENTION` - Twitter/X mention
|
|
37
40
|
* - `WHATSAPP` - WhatsApp
|
|
38
41
|
*/
|
|
39
42
|
var ConversationChannel;
|
|
40
43
|
(function (ConversationChannel) {
|
|
41
44
|
ConversationChannel["CHAT"] = "WEB_CHAT";
|
|
45
|
+
ConversationChannel["FACEBOOK_COMMENT"] = "FACEBOOK_COMMENT";
|
|
42
46
|
ConversationChannel["FACEBOOK_MESSENGER"] = "FACEBOOK_MESSENGER";
|
|
43
47
|
ConversationChannel["IN_APP_CHAT"] = "IN_APP_CHAT";
|
|
44
48
|
ConversationChannel["INSTAGRAM_DM"] = "INSTAGRAM_DM";
|
|
45
49
|
ConversationChannel["SMS"] = "SMS";
|
|
46
50
|
ConversationChannel["TRUSTPILOT_SERVICE_REVIEW"] = "TRUSTPILOT_SERVICE_REVIEW";
|
|
51
|
+
ConversationChannel["TWITTER_X_DM"] = "TWITTER_X_DM";
|
|
52
|
+
ConversationChannel["TWITTER_X_MENTION"] = "TWITTER_X_MENTION";
|
|
47
53
|
ConversationChannel["WHATS_APP"] = "WHATSAPP";
|
|
48
54
|
})(ConversationChannel = exports.ConversationChannel || (exports.ConversationChannel = {}));
|
|
49
55
|
/**
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FrustrationEvent Entity Definition
|
|
3
|
+
*
|
|
4
|
+
* One row per Odin change that scored an Account: event type, when, weight and weight version, plus a pointer at the source record. Append-only; the timeline and audit trail behind a FrustrationScore. No free text, no personal data.
|
|
5
|
+
*
|
|
6
|
+
* @module SupportModule
|
|
7
|
+
* @entity FrustrationEvent
|
|
8
|
+
* @schemaId 1ee547d3-e74a-4b6b-9a11-a087cc2d1ce9
|
|
9
|
+
*
|
|
10
|
+
* AUTO-GENERATED - DO NOT EDIT DIRECTLY
|
|
11
|
+
* Generated from Odin schema definition
|
|
12
|
+
*/
|
|
13
|
+
import { OdinRecord, OdinLink, LinkedOdinRecord } from '@d19n/odin-types/dist/core';
|
|
14
|
+
import { AccountProperties } from './Account';
|
|
15
|
+
import { FrustrationScoreProperties } from './FrustrationScore';
|
|
16
|
+
/**
|
|
17
|
+
* Available types for FrustrationEvent records
|
|
18
|
+
*/
|
|
19
|
+
export declare enum FrustrationEventEntityTypes {
|
|
20
|
+
/** This is the default record type */
|
|
21
|
+
DEFAULT = "DEFAULT"
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Valid values for FrustrationEvent.EventType
|
|
25
|
+
*
|
|
26
|
+
* Which catalogue event this is, E01-E30 (business-processes/frustration-score/04-odin-event-mapping.md).
|
|
27
|
+
*
|
|
28
|
+
* @remarks Available options:
|
|
29
|
+
* - `E01` - E01 Customer opened live chat
|
|
30
|
+
* - `E02` - E02 Second chat within 48h
|
|
31
|
+
* - `E03` - E03 Complaint created
|
|
32
|
+
* - `E04` - E04 Complaint escalated
|
|
33
|
+
* - `E05` - E05 Engineer visit booked
|
|
34
|
+
* - `E06` - E06 Engineer visit cancelled
|
|
35
|
+
* - `E07` - E07 Engineer visit missed
|
|
36
|
+
* - `E08` - E08 Engineer arrived late
|
|
37
|
+
* - `E09` - E09 Engineer revisit required
|
|
38
|
+
* - `E10` - E10 Network outage started
|
|
39
|
+
* - `E11` - E11 Network outage resolved
|
|
40
|
+
* - `E12` - E12 Router offline over 24h
|
|
41
|
+
* - `E13` - E13 ONT offline
|
|
42
|
+
* - `E14` - E14 Payment failed
|
|
43
|
+
* - `E15` - E15 Payment overdue
|
|
44
|
+
* - ... and 15 more
|
|
45
|
+
*/
|
|
46
|
+
export declare enum FrustrationEventEventType {
|
|
47
|
+
E01_CUSTOMER_OPENED_LIVE_CHAT = "E01",
|
|
48
|
+
E02_SECOND_CHAT_WITHIN_48H = "E02",
|
|
49
|
+
E03_COMPLAINT_CREATED = "E03",
|
|
50
|
+
E04_COMPLAINT_ESCALATED = "E04",
|
|
51
|
+
E05_ENGINEER_VISIT_BOOKED = "E05",
|
|
52
|
+
E06_ENGINEER_VISIT_CANCELLED = "E06",
|
|
53
|
+
E07_ENGINEER_VISIT_MISSED = "E07",
|
|
54
|
+
E08_ENGINEER_ARRIVED_LATE = "E08",
|
|
55
|
+
E09_ENGINEER_REVISIT_REQUIRED = "E09",
|
|
56
|
+
E10_NETWORK_OUTAGE_STARTED = "E10",
|
|
57
|
+
E11_NETWORK_OUTAGE_RESOLVED = "E11",
|
|
58
|
+
E12_ROUTER_OFFLINE_OVER_24H = "E12",
|
|
59
|
+
E13_ONT_OFFLINE = "E13",
|
|
60
|
+
E14_PAYMENT_FAILED = "E14",
|
|
61
|
+
E15_PAYMENT_OVERDUE = "E15",
|
|
62
|
+
E16_DIRECT_DEBIT_FAILED = "E16",
|
|
63
|
+
E17_SPEED_TEST_BELOW_EXPECTED = "E17",
|
|
64
|
+
E18_PACKAGE_DOWNGRADED = "E18",
|
|
65
|
+
E19_PACKAGE_UPGRADED = "E19",
|
|
66
|
+
E20_NEGATIVE_CSAT_SURVEY = "E20",
|
|
67
|
+
E21_POSITIVE_CSAT_SURVEY = "E21",
|
|
68
|
+
E22_TRUSTPILOT_REVIEW = "E22",
|
|
69
|
+
E23_BILLING_ADJUSTMENT = "E23",
|
|
70
|
+
E24_REFUND_ISSUED = "E24",
|
|
71
|
+
E25_REFERRAL_COMPLETED = "E25",
|
|
72
|
+
E26_COMPLAINT_RESOLVED = "E26",
|
|
73
|
+
E27_SUPPORT_TICKET_CLOSED = "E27",
|
|
74
|
+
E28_CUSTOMER_INACTIVE = "E28",
|
|
75
|
+
E29_CUSTOMER_USING_APP_REGULARLY = "E29",
|
|
76
|
+
E30_NO_ISSUES_FOR_30_DAYS = "E30"
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Valid values for FrustrationEvent.Origin
|
|
80
|
+
*
|
|
81
|
+
* SYSTEM when an RMQ consumer mapped an Odin change; MANUAL when a Team Leader recorded it (AddFrustrationEvent).
|
|
82
|
+
*
|
|
83
|
+
* @remarks Available options:
|
|
84
|
+
* - `MANUAL` - Manual
|
|
85
|
+
* - `SYSTEM` - System
|
|
86
|
+
*/
|
|
87
|
+
export declare enum FrustrationEventOrigin {
|
|
88
|
+
MANUAL = "MANUAL",
|
|
89
|
+
SYSTEM = "SYSTEM"
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Property keys for FrustrationEvent
|
|
93
|
+
* Use these constants instead of string literals for type safety
|
|
94
|
+
*/
|
|
95
|
+
export declare enum FrustrationEventPropertyKeys {
|
|
96
|
+
/** Which catalogue event this is, E01-E30 (business-processes/frustration-score/04-odin-event-mapping.md). */
|
|
97
|
+
EventType = "EventType",
|
|
98
|
+
/** When the source change happened, from the source record, not when the event was ingested. Decay is measured from here; older than 60 days contributes nothing. */
|
|
99
|
+
OccurredAt = "OccurredAt",
|
|
100
|
+
/** The points applied when this event was scored, before decay. Negative for positive events. Kept on the row so a later weight change does not rewrite history. */
|
|
101
|
+
Weight = "Weight",
|
|
102
|
+
/** The Config version the Weight came from. */
|
|
103
|
+
WeightVersion = "WeightVersion",
|
|
104
|
+
/** The source record type as Module:Entity, e.g. SupportModule:Case. Text so a new source needs no schema change. */
|
|
105
|
+
SourceEntity = "SourceEntity",
|
|
106
|
+
/** The source record uuid. */
|
|
107
|
+
SourceRecordId = "SourceRecordId",
|
|
108
|
+
/** The source record number an agent can open, e.g. CS123456 or WO98765. */
|
|
109
|
+
SourceRecordNumber = "SourceRecordNumber",
|
|
110
|
+
/** Source record id + the transition or field that changed. UNIQUE, so the same Odin change redelivered by RabbitMQ or replayed by a backfill cannot score twice. */
|
|
111
|
+
IdempotencyKey = "IdempotencyKey",
|
|
112
|
+
/** SYSTEM when an RMQ consumer mapped an Odin change; MANUAL when a Team Leader recorded it (AddFrustrationEvent). */
|
|
113
|
+
Origin = "Origin"
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Properties for FrustrationEvent records
|
|
117
|
+
*
|
|
118
|
+
* @see SupportModule:FrustrationEvent
|
|
119
|
+
*/
|
|
120
|
+
export interface FrustrationEventProperties {
|
|
121
|
+
/** Which catalogue event this is, E01-E30 (business-processes/frustration-score/04-odin-event-mapping.md).
|
|
122
|
+
*
|
|
123
|
+
* @type {ENUM}
|
|
124
|
+
* @default
|
|
125
|
+
* @enum {FrustrationEventEventType}
|
|
126
|
+
*/
|
|
127
|
+
EventType: FrustrationEventEventType;
|
|
128
|
+
/** When the source change happened, from the source record, not when the event was ingested. Decay is measured from here; older than 60 days contributes nothing.
|
|
129
|
+
*
|
|
130
|
+
* @type {DATE_TIME}
|
|
131
|
+
* @default
|
|
132
|
+
*/
|
|
133
|
+
OccurredAt: string;
|
|
134
|
+
/** The points applied when this event was scored, before decay. Negative for positive events. Kept on the row so a later weight change does not rewrite history.
|
|
135
|
+
*
|
|
136
|
+
* @type {NUMBER}
|
|
137
|
+
* @default
|
|
138
|
+
*/
|
|
139
|
+
Weight: number;
|
|
140
|
+
/** The Config version the Weight came from.
|
|
141
|
+
*
|
|
142
|
+
* @type {TEXT}
|
|
143
|
+
* @default
|
|
144
|
+
*/
|
|
145
|
+
WeightVersion: string;
|
|
146
|
+
/** The source record type as Module:Entity, e.g. SupportModule:Case. Text so a new source needs no schema change.
|
|
147
|
+
*
|
|
148
|
+
* @type {TEXT}
|
|
149
|
+
* @default
|
|
150
|
+
*/
|
|
151
|
+
SourceEntity: string;
|
|
152
|
+
/** The source record uuid.
|
|
153
|
+
*
|
|
154
|
+
* @type {TEXT}
|
|
155
|
+
* @default
|
|
156
|
+
*/
|
|
157
|
+
SourceRecordId: string;
|
|
158
|
+
/** The source record number an agent can open, e.g. CS123456 or WO98765.
|
|
159
|
+
*
|
|
160
|
+
* @type {TEXT}
|
|
161
|
+
* @default
|
|
162
|
+
*/
|
|
163
|
+
SourceRecordNumber: string;
|
|
164
|
+
/** Source record id + the transition or field that changed. UNIQUE, so the same Odin change redelivered by RabbitMQ or replayed by a backfill cannot score twice.
|
|
165
|
+
*
|
|
166
|
+
* @type {TEXT}
|
|
167
|
+
* @default
|
|
168
|
+
*/
|
|
169
|
+
IdempotencyKey: string;
|
|
170
|
+
/** SYSTEM when an RMQ consumer mapped an Odin change; MANUAL when a Team Leader recorded it (AddFrustrationEvent).
|
|
171
|
+
*
|
|
172
|
+
* @type {ENUM}
|
|
173
|
+
* @default
|
|
174
|
+
* @enum {FrustrationEventOrigin}
|
|
175
|
+
*/
|
|
176
|
+
Origin: FrustrationEventOrigin;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* FrustrationEvent entity from SupportModule
|
|
180
|
+
*
|
|
181
|
+
* One row per Odin change that scored an Account: event type, when, weight and weight version, plus a pointer at the source record. Append-only; the timeline and audit trail behind a FrustrationScore. No free text, no personal data.
|
|
182
|
+
*
|
|
183
|
+
* @module SupportModule
|
|
184
|
+
* @entity FrustrationEvent
|
|
185
|
+
* @schemaId 1ee547d3-e74a-4b6b-9a11-a087cc2d1ce9
|
|
186
|
+
* @recordPrefix CFE
|
|
187
|
+
* @capabilities searchable, updateable, undeletable, triggerable
|
|
188
|
+
*/
|
|
189
|
+
export declare class FrustrationEvent extends OdinRecord<FrustrationEventProperties> {
|
|
190
|
+
entity: 'SupportModule:FrustrationEvent';
|
|
191
|
+
type: FrustrationEventEntityTypes;
|
|
192
|
+
schemaId: '1ee547d3-e74a-4b6b-9a11-a087cc2d1ce9';
|
|
193
|
+
properties: FrustrationEventProperties;
|
|
194
|
+
/** Linked Account records (FrustrationEvent__Account) */
|
|
195
|
+
Account: OdinLink<LinkedOdinRecord<AccountProperties>>;
|
|
196
|
+
/** Linked FrustrationScore records (FrustrationEvent__FrustrationScore) */
|
|
197
|
+
FrustrationScore: OdinLink<LinkedOdinRecord<FrustrationScoreProperties>>;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* RabbitMQ routing keys for FrustrationEvent events
|
|
201
|
+
*/
|
|
202
|
+
export declare const ROUTING_KEY_FRUSTRATION_EVENT_CREATED = "SupportModule.FrustrationEvent.SubDbRecordCreated";
|
|
203
|
+
export declare const ROUTING_KEY_FRUSTRATION_EVENT_UPDATED = "SupportModule.FrustrationEvent.SubDbRecordUpdated";
|
|
204
|
+
export declare const ROUTING_KEY_FRUSTRATION_EVENT_DELETED = "SupportModule.FrustrationEvent.SubDbRecordDeleted";
|
|
205
|
+
/**
|
|
206
|
+
* Type-specific routing keys for FrustrationEvent events
|
|
207
|
+
* Subscribe to these for events on specific entity types only
|
|
208
|
+
*/
|
|
209
|
+
/** This is the default record type created */
|
|
210
|
+
export declare const ROUTING_KEY_FRUSTRATION_EVENT_DEFAULT_CREATED = "SupportModule.FrustrationEvent.DEFAULT.SubDbRecordCreated";
|
|
211
|
+
/** This is the default record type updated */
|
|
212
|
+
export declare const ROUTING_KEY_FRUSTRATION_EVENT_DEFAULT_UPDATED = "SupportModule.FrustrationEvent.DEFAULT.SubDbRecordUpdated";
|
|
213
|
+
/** This is the default record type deleted */
|
|
214
|
+
export declare const ROUTING_KEY_FRUSTRATION_EVENT_DEFAULT_DELETED = "SupportModule.FrustrationEvent.DEFAULT.SubDbRecordDeleted";
|
|
215
|
+
/** Event: FrustrationEvent__Account link created */
|
|
216
|
+
export declare const ROUTING_KEY_LINK_FRUSTRATION_EVENT_ACCOUNT_CREATED = "SupportModule.FrustrationEvent.Account.SubDbRecordAssociationCreated";
|
|
217
|
+
/** Event: FrustrationEvent__Account link deleted */
|
|
218
|
+
export declare const ROUTING_KEY_LINK_FRUSTRATION_EVENT_ACCOUNT_DELETED = "SupportModule.FrustrationEvent.Account.SubDbRecordAssociationDeleted";
|
|
219
|
+
/** Event: FrustrationEvent__FrustrationScore link created */
|
|
220
|
+
export declare const ROUTING_KEY_LINK_FRUSTRATION_EVENT_FRUSTRATION_SCORE_CREATED = "SupportModule.FrustrationEvent.FrustrationScore.SubDbRecordAssociationCreated";
|
|
221
|
+
/** Event: FrustrationEvent__FrustrationScore link deleted */
|
|
222
|
+
export declare const ROUTING_KEY_LINK_FRUSTRATION_EVENT_FRUSTRATION_SCORE_DELETED = "SupportModule.FrustrationEvent.FrustrationScore.SubDbRecordAssociationDeleted";
|