CASH-1029 Dynamo Logging
CASH-1029 Dynamo Logging
This commit is contained in:
parent
eecb29cf43
commit
a0a922b302
10 changed files with 146 additions and 33 deletions
|
|
@ -176,6 +176,10 @@ const endpoints = {
|
||||||
url: "/analytics/api/v1/analytics/log-part-questions",
|
url: "/analytics/api/v1/analytics/log-part-questions",
|
||||||
method: "POST",
|
method: "POST",
|
||||||
},
|
},
|
||||||
|
LogDigitalConsumer: {
|
||||||
|
url: "/analytics/api/v1/analytics/digitalconsumer-log",
|
||||||
|
method: "POST",
|
||||||
|
},
|
||||||
GetExperimentsByUser: {
|
GetExperimentsByUser: {
|
||||||
url: "/analytics/api/v1/analytics/get-experiments",
|
url: "/analytics/api/v1/analytics/get-experiments",
|
||||||
method: "GET",
|
method: "GET",
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ const experimentSettings = {
|
||||||
FOSTER_LOVE: "DisplayFosterLove",
|
FOSTER_LOVE: "DisplayFosterLove",
|
||||||
SKIP_TO_INSURANCE: "SkipToInsurance",
|
SKIP_TO_INSURANCE: "SkipToInsurance",
|
||||||
DISPLAY_AFTERPAY_BREAKOUT_DISPLAY: "Display_AfterpayBreakoutDisplay",
|
DISPLAY_AFTERPAY_BREAKOUT_DISPLAY: "Display_AfterpayBreakoutDisplay",
|
||||||
|
DYNAMO_LOGGING: "DynamoLogging",
|
||||||
};
|
};
|
||||||
|
|
||||||
const experimentTriggers = {
|
const experimentTriggers = {
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,7 @@ const storeActions = {
|
||||||
LOG_CUSTOM_EVENT: "logCustomEvent",
|
LOG_CUSTOM_EVENT: "logCustomEvent",
|
||||||
INITIALIZE_SESSION: "initializeSession",
|
INITIALIZE_SESSION: "initializeSession",
|
||||||
LOG_PART_QUESTIONS: "logPartQuestions",
|
LOG_PART_QUESTIONS: "logPartQuestions",
|
||||||
|
LOG_DIGITALCONSUMER: "logDigitalConsumer",
|
||||||
|
|
||||||
// DEPENDENCY MUTATIONS
|
// DEPENDENCY MUTATIONS
|
||||||
RESET_VEHICLE_STATE_AND_DEPENDENCIES: "resetVehicleStateAndDependencies",
|
RESET_VEHICLE_STATE_AND_DEPENDENCIES: "resetVehicleStateAndDependencies",
|
||||||
|
|
|
||||||
|
|
@ -1311,8 +1311,7 @@ export default {
|
||||||
.amount-due,
|
.amount-due,
|
||||||
.amount-paid,
|
.amount-paid,
|
||||||
.donation-amount {
|
.donation-amount {
|
||||||
font-family:
|
font-family: UrbanistSemibold, AvertaSemibold; /* Okay to remove AvertaSemibold after 2025.06.19 merge/release */
|
||||||
UrbanistSemibold, AvertaSemibold; /* Okay to remove AvertaSemibold after 2025.06.19 merge/release */
|
|
||||||
color: $black;
|
color: $black;
|
||||||
}
|
}
|
||||||
.sub-total {
|
.sub-total {
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,9 @@ export default {
|
||||||
return resolve(response);
|
return resolve(response);
|
||||||
},
|
},
|
||||||
(error) => {
|
(error) => {
|
||||||
|
if (endpoint.toLowerCase().includes("/digitalconsumer-log")) {
|
||||||
|
return resolve({ data: null, error: "Ignore errors when logging" });
|
||||||
|
} else {
|
||||||
if (logApiCall) {
|
if (logApiCall) {
|
||||||
analyticsMixIn.methods.pushEventToGA(
|
analyticsMixIn.methods.pushEventToGA(
|
||||||
GaCategories.API_RESPONSE,
|
GaCategories.API_RESPONSE,
|
||||||
|
|
@ -129,6 +132,7 @@ export default {
|
||||||
|
|
||||||
return reject(error.response);
|
return reject(error.response);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,8 @@ import {
|
||||||
setSessionKeyIfUnset,
|
setSessionKeyIfUnset,
|
||||||
} from "@/helpers/heritage-integration/cookie-helper";
|
} from "@/helpers/heritage-integration/cookie-helper";
|
||||||
import { queryStrings } from "@/constants/query-strings";
|
import { queryStrings } from "@/constants/query-strings";
|
||||||
import { experimentSettings } from "@/constants/experiments";
|
import { experimentSettings, experimentUniverses } from "@/constants/experiments";
|
||||||
|
import experimentMixin from "@/mixins/experiment-mixin";
|
||||||
import {
|
import {
|
||||||
analyticsPageEvents,
|
analyticsPageEvents,
|
||||||
GaCategories,
|
GaCategories,
|
||||||
|
|
@ -128,6 +129,60 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
async logDigitalConsumer() {
|
||||||
|
const currentPageName = getPageNameFromRouter();
|
||||||
|
const universes = store.getters.applicationUser.experiments;
|
||||||
|
console.log(JSON.stringify(universes));
|
||||||
|
|
||||||
|
let hasDynamoLogging = experimentMixin.methods.hasSettingEqualTo(
|
||||||
|
experimentSettings.DYNAMO_LOGGING,
|
||||||
|
"true",
|
||||||
|
universes
|
||||||
|
);
|
||||||
|
if (!hasDynamoLogging) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const variationNames = universes
|
||||||
|
.filter((item) => item.universeName === experimentUniverses.CONCEPT_FUNNEL)
|
||||||
|
.map((item) => item.variationName)
|
||||||
|
.filter(Boolean); // removes undefined/null
|
||||||
|
|
||||||
|
const conceptVariation = variationNames.length > 0 ? variationNames[0] : "";
|
||||||
|
|
||||||
|
const submittedOrder = baseMixin.methods.getSubmittedOrder();
|
||||||
|
const hasSubmittedOrder = baseMixin.methods.hasSubmittedOrder();
|
||||||
|
const hasSubmittedOrderAtConfirmationPage =
|
||||||
|
hasSubmittedOrder && currentPageName?.toLowerCase() == routeData.CONFIRMATION.name;
|
||||||
|
|
||||||
|
const refSequenceNum = hasSubmittedOrderAtConfirmationPage
|
||||||
|
? submittedOrder.referralSequenceNumber
|
||||||
|
: store.getters.order.referralSequenceNumber;
|
||||||
|
|
||||||
|
var payload = {
|
||||||
|
actionName: `Browser page:${currentPageName}`,
|
||||||
|
referralSequenceNumber: hasSubmittedOrderAtConfirmationPage
|
||||||
|
? submittedOrder.referralSequenceNumber
|
||||||
|
: store.getters.order.referralSequenceNumber,
|
||||||
|
referralNumber: hasSubmittedOrderAtConfirmationPage
|
||||||
|
? submittedOrder.referralNumber
|
||||||
|
: store.getters.order.referralNumber,
|
||||||
|
workOrderId: hasSubmittedOrderAtConfirmationPage
|
||||||
|
? submittedOrder.workOrderId
|
||||||
|
: store.getters.order.workOrderId,
|
||||||
|
workOrderNumber: hasSubmittedOrderAtConfirmationPage
|
||||||
|
? submittedOrder.workOrderNumber
|
||||||
|
: store.getters.order.workOrderNumber,
|
||||||
|
conceptVariation: conceptVariation,
|
||||||
|
};
|
||||||
|
|
||||||
|
await baseMixin.methods.dispatchStoreAction(
|
||||||
|
storeActions.LOG_DIGITALCONSUMER,
|
||||||
|
payload,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
async pushEventForChatsToGA(category, action, label, pushToLogApp = false) {
|
async pushEventForChatsToGA(category, action, label, pushToLogApp = false) {
|
||||||
const currentPageName = getPageNameFromRouter();
|
const currentPageName = getPageNameFromRouter();
|
||||||
const value = `2.0_${currentPageName}`;
|
const value = `2.0_${currentPageName}`;
|
||||||
|
|
|
||||||
|
|
@ -197,6 +197,18 @@ export default {
|
||||||
return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
|
return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
isMobileDevice() {
|
||||||
|
const userAgent = navigator.userAgent;
|
||||||
|
return (
|
||||||
|
userAgent.includes("Android") ||
|
||||||
|
userAgent.includes("Mobile") ||
|
||||||
|
userAgent.includes("iPod") ||
|
||||||
|
userAgent.includes("iPhone") ||
|
||||||
|
userAgent.includes("IEMobile") ||
|
||||||
|
userAgent.includes("BlackBerry") ||
|
||||||
|
userAgent.includes("webOS")
|
||||||
|
);
|
||||||
|
},
|
||||||
getSubmittedOrder() {
|
getSubmittedOrder() {
|
||||||
return JSON.parse(
|
return JSON.parse(
|
||||||
window.sessionStorage.getItem(sessionStorageKeyConstants.SUBMITTED_STATE)
|
window.sessionStorage.getItem(sessionStorageKeyConstants.SUBMITTED_STATE)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,9 @@
|
||||||
import analyticsMixin from "@/mixins/analytics-mixin";
|
import analyticsMixin from "@/mixins/analytics-mixin";
|
||||||
|
|
||||||
export async function afterEach(to, from) {
|
export async function afterEach(to, from) {
|
||||||
|
// digital consumer logging
|
||||||
|
analyticsMixin.methods.logDigitalConsumer();
|
||||||
|
|
||||||
// Push page view to GA
|
// Push page view to GA
|
||||||
analyticsMixin.methods.pushPageViewToGA();
|
analyticsMixin.methods.pushPageViewToGA();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,11 @@ import { experimentTriggers } from "@/constants/experiments";
|
||||||
import { damageLocationsSelected } from "@/constants/damage-locations-selected";
|
import { damageLocationsSelected } from "@/constants/damage-locations-selected";
|
||||||
import { singleWindshieldCarIds } from "@/constants/single-windshield-carids";
|
import { singleWindshieldCarIds } from "@/constants/single-windshield-carids";
|
||||||
import { routeData } from "@/router/constants/routes";
|
import { routeData } from "@/router/constants/routes";
|
||||||
import { deleteFunnelCookie } from "@/helpers/heritage-integration/cookie-helper.js";
|
import {
|
||||||
|
deleteFunnelCookie,
|
||||||
|
getSessionIdValue,
|
||||||
|
getDeviceIdValue,
|
||||||
|
} from "@/helpers/heritage-integration/cookie-helper.js";
|
||||||
import { deepEqual } from "@/helpers/object-helper";
|
import { deepEqual } from "@/helpers/object-helper";
|
||||||
import baseMixin from "@/mixins/base-mixin.js";
|
import baseMixin from "@/mixins/base-mixin.js";
|
||||||
import {
|
import {
|
||||||
|
|
@ -1551,6 +1555,36 @@ export const actions = {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
logDigitalConsumer(
|
||||||
|
context,
|
||||||
|
{
|
||||||
|
actionName,
|
||||||
|
referralSequenceNumber,
|
||||||
|
referralNumber,
|
||||||
|
workOrderId,
|
||||||
|
workOrderNumber,
|
||||||
|
conceptVariation,
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
var payload = {
|
||||||
|
sessionId: getSessionIdValue(),
|
||||||
|
deviceId: getDeviceIdValue(),
|
||||||
|
actionName: actionName ?? "",
|
||||||
|
referralSequenceNumber: referralSequenceNumber ?? "",
|
||||||
|
referralNumber: referralNumber ?? "",
|
||||||
|
applicationName: baseMixin.methods.isMobileDevice() ? "2.0 Mobile" : "2.0",
|
||||||
|
workOrderId: workOrderId ?? "",
|
||||||
|
workOrderNumber: workOrderNumber ?? "",
|
||||||
|
conceptVariation: conceptVariation,
|
||||||
|
};
|
||||||
|
|
||||||
|
return globalMethods.callHttpClient({
|
||||||
|
method: endpoints.LogDigitalConsumer.method,
|
||||||
|
endpoint: endpoints.LogDigitalConsumer.url,
|
||||||
|
payload: payload,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
// Misc Actions
|
// Misc Actions
|
||||||
setReferralInformation(context, { referralNumber, referralDate, referralCorrelationId, eon }) {
|
setReferralInformation(context, { referralNumber, referralDate, referralCorrelationId, eon }) {
|
||||||
context.commit(storeMutations.UPDATE_REFERRAL_NUMBER, referralNumber);
|
context.commit(storeMutations.UPDATE_REFERRAL_NUMBER, referralNumber);
|
||||||
|
|
|
||||||
|
|
@ -121,8 +121,8 @@ $body-color: $gray-600;
|
||||||
|
|
||||||
//Fonts
|
//Fonts
|
||||||
$font-family-sans-serif: UrbanistRegular, Arial, Helvetica, sans-serif;
|
$font-family-sans-serif: UrbanistRegular, Arial, Helvetica, sans-serif;
|
||||||
$font-family-monospace:
|
$font-family-monospace: UrbanistRegular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New",
|
||||||
UrbanistRegular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
monospace;
|
||||||
// stylelint-enable value-keyword-case
|
// stylelint-enable value-keyword-case
|
||||||
$font-family-base: $font-family-sans-serif;
|
$font-family-base: $font-family-sans-serif;
|
||||||
$font-family-code: $font-family-monospace;
|
$font-family-code: $font-family-monospace;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue