Files
shoptime/com.twin.app.shoptime/src/actions/logActions.js
optrader 741c4338ca [251124] fix: Log정리-5
🕐 커밋 시간: 2025. 11. 24. 12:43:58

📊 변경 통계:
  • 총 파일: 40개
  • 추가: +774줄
  • 삭제: -581줄

📝 수정된 파일:
  ~ com.twin.app.shoptime/src/actions/appDataActions.js
  ~ com.twin.app.shoptime/src/actions/billingActions.js
  ~ com.twin.app.shoptime/src/actions/brandActions.js
  ~ com.twin.app.shoptime/src/actions/cancelActions.js
  ~ com.twin.app.shoptime/src/actions/cardActions.js
  ~ com.twin.app.shoptime/src/actions/cartActions.js
  ~ com.twin.app.shoptime/src/actions/checkoutActions.js
  ~ com.twin.app.shoptime/src/actions/commonActions.js
  ~ com.twin.app.shoptime/src/actions/convertActions.js
  ~ com.twin.app.shoptime/src/actions/couponActions.js
  ~ com.twin.app.shoptime/src/actions/deviceActions.js
  ~ com.twin.app.shoptime/src/actions/empActions.js
  ~ com.twin.app.shoptime/src/actions/eventActions.js
  ~ com.twin.app.shoptime/src/actions/forYouActions.js
  ~ com.twin.app.shoptime/src/actions/homeActions.js
  ~ com.twin.app.shoptime/src/actions/logActions.js
  ~ com.twin.app.shoptime/src/actions/mediaActions.js
  ~ com.twin.app.shoptime/src/actions/mockCartActions.js
  ~ com.twin.app.shoptime/src/actions/myPageActions.js
  ~ com.twin.app.shoptime/src/actions/onSaleActions.js
  ~ com.twin.app.shoptime/src/actions/orderActions.js
  ~ com.twin.app.shoptime/src/actions/panelActions.js
  ~ com.twin.app.shoptime/src/actions/panelNavigationActions.js
  ~ com.twin.app.shoptime/src/actions/pinCodeActions.js
  ~ com.twin.app.shoptime/src/actions/productActions.js
  ~ com.twin.app.shoptime/src/actions/queuedPanelActions.js
  ~ com.twin.app.shoptime/src/actions/searchActions.js
  ~ com.twin.app.shoptime/src/actions/shippingActions.js
  ~ com.twin.app.shoptime/src/actions/voiceActions.js
  ~ com.twin.app.shoptime/src/actions/webSpeechActions.js
  ~ com.twin.app.shoptime/src/reducers/localSettingsReducer.js
  ~ com.twin.app.shoptime/src/reducers/mediaOverlayReducer.js
  ~ com.twin.app.shoptime/src/reducers/mockCartReducer.js
  ~ com.twin.app.shoptime/src/reducers/playReducer.js
  ~ com.twin.app.shoptime/src/reducers/productReducer.js
  ~ com.twin.app.shoptime/src/reducers/videoOverlayReducer.js
  ~ com.twin.app.shoptime/src/views/UserReview/ShowUserReviews.jsx
  ~ com.twin.app.shoptime/src/views/UserReview/UserReviewPanel.jsx
  ~ com.twin.app.shoptime/src/views/UserReview/components/UserReviewsList.jsx
  ~ com.twin.app.shoptime/src/views/UserReview/components/VirtualScrollBar.jsx

🔧 함수 변경 내용:
  📊 Function-level changes summary across 40 files:
    • Functions added: 14
    • Functions modified: 34
    • Functions deleted: 18
  📋 By language:
    • javascript: 40 files, 66 function changes

🔧 주요 변경 내용:
  • 핵심 비즈니스 로직 개선
  • 로깅 시스템 개선
  • 설정 관리 시스템 개선
  • UI 컴포넌트 아키텍처 개선
2025-11-24 12:47:57 +09:00

1559 lines
35 KiB
JavaScript

import { countryCode, URLS } from '../api/apiConfig';
import { TLogEvent } from '../api/TLogEvent';
import { LOG_MENU, LOG_TP_NO } from '../utils/Config';
import { formatGMTString, getTimeDifferenceByMilliseconds } from '../utils/helperMethods';
import { setGNBMenu, setSecondLayerInfo } from './commonActions';
import { createDebugHelpers } from '../utils/debug';
// 디버그 헬퍼 설정
const DEBUG_MODE = false;
const { dlog, dwarn, derror } = createDebugHelpers(DEBUG_MODE);
export const getUrlByLogTpNo = (logTpNo) => {
switch (logTpNo) {
// IG-LGSP-LOG-001 / Live 시청 이력
case LOG_TP_NO.LIVE.HOME:
case LOG_TP_NO.LIVE.FEATURED_BRANDS:
case LOG_TP_NO.LIVE.FULL:
case LOG_TP_NO.LIVE.ITEM_DETAIL:
return URLS.LOG_LIVE;
// IG-LGSP-LOG-002 / VOD 시청 이력
case LOG_TP_NO.VOD.FULL_VOD:
case LOG_TP_NO.VOD.POPULAR_SHOWS_AND_HOT_PICKS:
case LOG_TP_NO.VOD.FEATURED_BRANDS_VOD: // no cases
case LOG_TP_NO.VOD.HOME_VOD:
case LOG_TP_NO.VOD.ITEM_DETAIL_VOD:
case LOG_TP_NO.VOD.FULL_MEDIA:
case LOG_TP_NO.VOD.ITEM_DETAIL_MEDIA:
return URLS.LOG_VOD;
// IF-LGSP-LOG-003 / Curation View 이력
case LOG_TP_NO.CURATION.HOT_PICKS:
case LOG_TP_NO.CURATION.SHOWROOM:
case LOG_TP_NO.CURATION.ON_SALE:
case LOG_TP_NO.CURATION.HOME:
case LOG_TP_NO.CURATION.CATEGORY:
return URLS.LOG_CURATION;
// IF-LGSP-LOG-004 / Entry 이력
case LOG_TP_NO.SECOND_LAYER:
return URLS.LOG_SECOND_LAYER;
// IF-LGSP-LOG-005 / GNB 클릭 이력
case LOG_TP_NO.GNB:
return URLS.LOG_GNB;
// IF-LGSP-LOG-006 / 상품 상세 이력
case LOG_TP_NO.PRODUCT.PRODUCT_DETAIL:
case LOG_TP_NO.PRODUCT.GROUP_DETAIL:
case LOG_TP_NO.PRODUCT.BILLING_PRODUCT_DETAIL:
case LOG_TP_NO.PRODUCT.PRODUCT_DETAIL_IMAGE:
return URLS.LOG_PRODUCT;
// IF-LGSP-LOG-007 / Detail 상세 이력
case LOG_TP_NO.DETAIL.THEME_DETAIL:
case LOG_TP_NO.DETAIL.TRAVEL_DETAIL:
case LOG_TP_NO.DETAIL.DETAIL_BUTTON_CLICK:
return URLS.LOG_DETAIL;
// IF-LGSP-LOG-008 / Shop by mobile 이력
case LOG_TP_NO.SHOP_BY_MOBILE.SHOP_BY_MOBILE:
case LOG_TP_NO.SHOP_BY_MOBILE.AGREE_AND_SEND:
case LOG_TP_NO.SHOP_BY_MOBILE.QR_CODE_REDIRECT_AND_CREATE_TRACKING_LOG:
return URLS.LOG_SHOP_BY_MOBILE;
// IF-LGSP-LOG-009 / Partners 클릭 이력
case LOG_TP_NO.PARTNERS:
return URLS.LOG_PARTNERS;
// IF-LGSP-LOG-010 / Reminder - Alert On/Off
case LOG_TP_NO.MY_PAGE_ALERT_FLAG:
return URLS.LOG_MY_PAGE_ALERT_FLAG;
// IF-LGSP-LOG-011 / My Page Delete 버튼 클릭 이력
case LOG_TP_NO.MY_PAGE_MY_DELETE:
return URLS.LOG_MY_PAGE_MY_DELETE;
// IF-LGSP-LOG-012 / My Page Notice View
case LOG_TP_NO.MY_PAGE_NOTICE:
return URLS.LOG_MY_PAGE_NOTICE;
// IF-LGSP-LOG-013 / 검색 이력
case LOG_TP_NO.SEARCH:
return URLS.LOG_SEARCH;
// IF-LGSP-LOG-014 / 검색 결과 클릭 이력
case LOG_TP_NO.SEARCH_CLICK:
return URLS.LOG_SEARCH_CLICK;
// IF-LGSP-LOG-015 / Upcoming On/Off
case LOG_TP_NO.UPCOMING_FLAG:
return URLS.LOG_UPCOMING_FLAG;
// IF-LGSP-LOG-017 / 알람 팝업
case LOG_TP_NO.ALARM_POP:
return URLS.LOG_ALARM_POP;
// IF-LGSP-LOG-018 / 알람 팝업 OK/NO 클릭
case LOG_TP_NO.ALARM_CLICK.BROADCAST:
case LOG_TP_NO.ALARM_CLICK.KEYWORD:
return URLS.LOG_ALARM_CLICK;
// IF-LGSP-LOG-020 / 테마 상품 상세 이력 → 테마 상품 클릭 이력
case LOG_TP_NO.THEME_PRODUCT:
return URLS.LOG_THEME_PRODUCT;
// IF-LGSP-LOG-100 / IF-LGSP-LOG-100 / TOP contents 노출 이력
case LOG_TP_NO.TOP_CONTENTS.VIEW:
case LOG_TP_NO.TOP_CONTENTS.CLICK:
return URLS.LOG_TOP_CONTENTS;
// IF-LGSP-LOG-110 / Featured Brands View 이력
case LOG_TP_NO.BRANDS:
return URLS.LOG_BRANDS;
// IF-LGSP-LOG-101 / 약관 동의, 미동의 클릭 이력
case LOG_TP_NO.TERMS.AGREE:
case LOG_TP_NO.TERMS.DO_NOT_AGREE:
case LOG_TP_NO.TERMS.TEARMS_CONDITIONS:
case LOG_TP_NO.TERMS.PRIVACY_POLICY:
return URLS.LOG_TERMS;
// IF-LGSP-LOG-102 / LG Account 로그인 이력
case LOG_TP_NO.LG_ACCOUNT_LOGIN:
return URLS.LOG_ACCOUNT_LOGIN;
// IF-LGSP-LOG-103 / Order 화면 버튼 클릭 이력
case LOG_TP_NO.ORDER_BTN_CLICK:
return URLS.LOG_ORDER_BTN_CLICK;
// IF-LGSP-LOG-104 / Order 취소/반품/교환 이력
case LOG_TP_NO.ORDER_CHANGE:
return URLS.LOG_ORDER_CHANGE;
// IF-LGSP-LOG-105 / 쿠폰 사용 이력
case LOG_TP_NO.COUPON_USE:
return URLS.LOG_COUPON_USE;
// IF-LGSP-LOG-108 / 결제 페이지 진입 이력
case LOG_TP_NO.PAYMENT_ENTRY:
return URLS.LOG_PAYMENT_ENTRY;
// IF-LGSP-LOG-109 / 결제 완료 이력
case LOG_TP_NO.PAYMENT_COMPLETE:
return URLS.LOG_PAYMENT_COMPLETE;
// IF-LGSP-LOG-111 / 카드, 주소 ADD/EDIT 이력
case LOG_TP_NO.MY_INFO_EDIT:
return URLS.LOG_MY_INFO_EDIT;
// IF-LGSP-LOG-112 / Check out 화면 버튼 클릭 이력
case LOG_TP_NO.CHECKOUT_BTN_CLICK:
return URLS.LOG_CHECKOUT_BTN_CLICK;
default:
return;
}
};
export const postTotalLog = (params, url) => (dispatch, getState) => {
const onSuccess = (response) => {
// dlog("#Total Log onSuccess.....", response);
};
const onFail = (error) => {
// derror("totalLog onFail...", error);
};
TLogEvent(
dispatch,
getState,
'post',
URLS.LOG_TOTAL_RECOMMEND,
{},
params,
onSuccess,
onFail,
true
);
};
export const postLog = (params, url) => (dispatch, getState) => {
const { logTpNo } = params;
const onSuccess = (response) => {
// dlog(
// `postLog onSuccess logTpNo ${logTpNo}`,
// JSON.parse(response.config.data)
// );
};
const onFail = (error) => {
derror('postLog onFail', error);
};
TLogEvent(
dispatch,
getState,
'post',
url ?? getUrlByLogTpNo(logTpNo),
{},
params,
onSuccess,
onFail
);
};
/**
* deepLink 수신 상태 모니터
*
* (?) deeplinkId 딥 링크 아이디
*
* (?) flag 딥 링크 여부
*/
export const sendLogDeepLinkFlag = (params) => (dispatch, getState) => {
const { deeplinkId, flag } = params;
dispatch(postLog({ deeplinkId, flag }, URLS.LOG_DEEPLINK));
};
/**
* IG-LGSP-LOG-001 / Live 시청 이력
*
* (M) entryMenu 진입 메뉴
*
* (O) lgCatCd 카테고리 코드
*
* (O) lgCatNm 카테고리 네임
*
* (O) linkTpCd 딥링크 타입
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 네임
*
* (M) patnrId 파트너 아이디
*
* (M) showId 쇼 아이디
*
* (M) showNm 쇼 네임
*
* (O) vdoTpNm 영상 가로 세로 여부 ("Vertical" or "Horizontal")
*
* (M) watchEndDt 시청 종료 시간
*
* (M) watchStrtDt 시청 시작 시간
*/
export const sendLogLive = (params, callback) => (dispatch, getState) => {
const { logTpNo, patncNm, patnrId, showId, watchStrtDt } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!logTpNo || !patncNm || !patnrId || !showId || !watchStrtDt) {
dlog('[sendLogLive] invalid params', params);
return;
}
const newParams = {
...params,
entryMenu: params?.entryMenu ?? entryMenu,
nowMenu: params?.nowMenu ?? nowMenu,
watchEndDt: params?.watchEndDt ?? formatGMTString(new Date()),
};
if (getTimeDifferenceByMilliseconds(watchStrtDt, newParams.watchEndDt)) {
dispatch(postLog(newParams));
if (callback) {
callback();
}
}
};
/**
* IG-LGSP-LOG-002 / VOD 시청 이력
*
* (M) entryMenu 진입 메뉴
*
* (O) lgCatCd 카테고리 코드
*
* (O) lgCatNm 카테고리 이름
*
* (O) linkTpCd 딥링크 타입
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 이름
*
* (M) patnrId 파트너 아이디
*
* (M) showId 방송 아이디 (media case: prdtId)
*
* (M) showNm 방송 이름 (media case: prdtNm)
*
* (O) vdoTpNm 영상 가로 세로 여부 ("Vertical" or "Horizontal")
*
* (M) watchEndDt 시청 종료 시간
*
* (M) watchStrtDt 시청 시작 시간
*/
export const sendLogVOD = (params, callback) => (dispatch, getState) => {
const { logTpNo, showId, watchStrtDt } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!logTpNo || !watchStrtDt) {
dlog('[sendLogLive] invalid params', params);
return;
}
if (
(logTpNo === LOG_TP_NO.VOD.FULL_VOD ||
logTpNo === LOG_TP_NO.VOD.POPULAR_SHOWS_AND_HOT_PICKS ||
logTpNo === LOG_TP_NO.VOD.FEATURED_BRANDS_VOD ||
logTpNo === LOG_TP_NO.VOD.HOME_VOD ||
logTpNo === LOG_TP_NO.VOD.ITEM_DETAIL_VOD) &&
!showId
) {
return;
}
const newParams = {
...params,
entryMenu: params?.entryMenu ?? entryMenu,
nowMenu: params?.nowMenu ?? nowMenu,
watchEndDt: params?.watchEndDt ?? formatGMTString(new Date()),
};
if (getTimeDifferenceByMilliseconds(watchStrtDt, newParams.watchEndDt)) {
dispatch(postLog(newParams));
if (callback) {
callback();
}
}
};
/**
* IF-LGSP-LOG-003 / Curations View 이력
*
* (O) cnttTpNm 컨텐츠 타입 네임 "show" / "item"
*
* (O) curationId 큐레이션 아이디
*
* (O) curationNm 큐레이션 네임
*
* (M) entryMenu 진입 메뉴
*
* (M) expsOrd 노출 순서
*
* (O) lgCatCd 카테고리 코드
*
* (O) lgCatNm 카테고리 네임
*
* (O) linkTpCd 딥링크 타입
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (O) patncNm 파트너 네임
*
* (O) patnrId 파트너 아이디
*
* (O) sortTpNm 정렬 타입 네임 "popular" / "new"
*/
export const sendLogCuration = (params) => (dispatch, getState) => {
const { logTpNo } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!logTpNo) {
dlog('[sendLogCuration] invalid params', params);
return;
}
const newParams = {
cnttTpNm: params.cnttTpNm ?? '',
curationId: params.curationId ?? '',
curationNm: params.curationNm ?? '',
entryMenu: entryMenu,
expsOrd: params.expsOrd ?? '',
lgCatCd: params.lgCatCd ?? '',
lgCatNm: params.lgCatNm ?? '',
logTpNo: params.logTpNo ?? '',
linkTpCd: params.linkTpCd ?? '',
nowMenu: nowMenu,
patncNm: params.patncNm ?? '',
patnrId: params.patnrId ?? '',
sortTpNm: params.sortTpNm ?? '',
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-004 / Entry 이력
*
* (M) clientIP 클라이언트 아이피 (server)
*
* (M) entryMenu 진입 메뉴
*
* (O) linkTpCd 딥링크 타입
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) x-device-language 디바이스 언어 (server)
*
*/
export const sendLogSecondLayer = (params) => (dispatch, getState) => {
const secondLayerInfo = getState().common.secondLayerInfo;
if (secondLayerInfo && Object.keys(secondLayerInfo).length === 0) {
return;
}
dispatch(postLog(params));
dispatch(setSecondLayerInfo({}));
};
/**
* IF-LGSP-LOG-005 / GNB 클릭 이력
*
* (M) entryMenu 진입 메뉴
*
* (M) inDt 진입 시간
*
* (M) logTpNo 로그 타입 넘버
*
* (M) menuMovSno 메뉴 이동 일련번호
*
* (M) nowMenu 현재 메뉴
*
* (M) outDt 진출 시간
*/
export const sendLogGNB = (menu) => (dispatch, getState) => {
const { menuMovSno, nowMenu } = getState().common.menu;
const secondLayerInfo = getState().common.secondLayerInfo;
if (!menu) {
dlog('[sendLogGNB] invalid params', menu);
return;
}
if (
![LOG_MENU.SEARCH_SEARCH, LOG_MENU.SEARCH_RESULT, LOG_MENU.SEARCH_BEST_SELLER].includes(menu)
) {
if (menu === nowMenu || !menuMovSno) {
return;
}
}
const newParams = {
entryMenu: nowMenu, // previous nowMenu
inDt: formatGMTString(new Date()),
logTpNo: LOG_TP_NO.GNB,
menuMovSno: `${menuMovSno}`,
nowMenu: menu,
outDt: '',
};
dispatch(setGNBMenu(menu));
dispatch(postLog(newParams));
if ([1].includes(menuMovSno) && secondLayerInfo && Object.keys(secondLayerInfo).length > 0) {
dispatch(
sendLogSecondLayer({
...secondLayerInfo,
entryMenu: nowMenu,
nowMenu: menu,
})
);
dispatch(
sendLogDeepLinkFlag({
deeplinkId: secondLayerInfo.deeplinkId,
flag: secondLayerInfo.deeplinkId ? 'Y' : 'N',
})
);
}
};
/**
* IF-LGSP-LOG-006 / 상품 상세 이력
*
* (M) befPrice 할인 전 가격
*
* (O) curationId 큐레이션 아이디
*
* (O) curationNm 큐레이션 이름
*
* (M) entryMenu 진입 메뉴
*
* (O) expsOrd 노출 순번
*
* (O) inDt 진입 시간
*
* (M) lastPrice 할인 후 가격
*
* (O) lgCatCd 카테고리 코드
*
* (O) lgCatNm 카테고리 이름
*
* (O) linkTpCd 딥링크 타입
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (O) outDt 진출 시간
*
* (M) patncNm 파트너 이름
*
* (M) patnrId 파트너 아이디
*
* (M) prdtId 상품 아이디
*
* (M) prdtNm 상품 이름
*
* (O) revwGrd 별점
*
* (M) rewdAplyFlag 리워드 적용 여부
*
* (M) tsvFlag TSV 여부
*/
export const sendLogProductDetail = (params) => (dispatch, getState) => {
const { logTpNo } = params;
const { entryMenu, nowMenu } = getState().common.menu;
const menu = logTpNo === LOG_TP_NO.PRODUCT.PRODUCT_DETAIL_IMAGE ? entryMenu : params?.entryMenu;
const outDt =
logTpNo === LOG_TP_NO.PRODUCT.PRODUCT_DETAIL_IMAGE ? '' : formatGMTString(new Date());
const newParams = {
...params,
entryMenu: menu,
nowMenu: nowMenu,
outDt,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-007 / Detail 상세 이력
*
* (O) curationId 큐레이션 아이디 (Theme의 경우 M, Hotel의 경우 O)
*
* (O) curationNm 큐레이션 이름 (Theme의 경우 M, Hotel의 경우 O)
*
* (M) entryMenu 진입 메뉴
*
* (O) inDt 진입 시간
*
* (O) linkTpCd 딥링크 타입
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (O) outDt 진출 시간
*
* (M) patncNm 파트너 이름
*
* (M) patnrId 파트너 아이디
*/
export const sendLogDetail = (params) => (dispatch, getState) => {
const { logTpNo, patncNm, patnrId } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!logTpNo || !patncNm || !patnrId) {
dlog('[sendLogDetail] invalid params', params);
return;
}
const outDt = logTpNo === LOG_TP_NO.DETAIL.DETAIL_BUTTON_CLICK ? '' : formatGMTString(new Date());
const newParams = {
...params,
entryMenu: entryMenu,
nowMenu: nowMenu,
outDt,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-008 / Shop by mobile 이력
*
* (M) befPrice 할인 전 가격
*
* (O) curationId 큐레이션 아이디
*
* (O) curationNm 큐레이션 이름
*
* (M) entryMenu 진입 메뉴
*
* (O) evntId 이벤트 아이디
*
* (O) evntNm 이벤트 이름
*
* (M) lastPrice 할인 후 가격
*
* (O) lgCatCd 카테고리 코드
*
* (O) lgCatNm 카테고리 이름
*
* (O) liveFlag 라이브 여부
*
* (O) locDt 디바이스 로컬 일시
*
* (M) logTpNo 로그 타입 넘버
*
* (M) mbphNoFlag 전화 번호 여부 (모바일 폰 넘버 플래그)
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 이름
*
* (M) patnrId 파트너 아이디
*
* (O) prdtId 상품 아이디
*
* (O) prdtNm 상품 이름
*
* (O) revwGrd 별점 (리뷰 그레이드)
*
* (M) rewdAplyFlag 리워드 적용 여부
*
* (M) shopByMobileFlag 샵 바이 모바일 여부
*
* (M) shopTpNm 샵 바이 모바일 타입 이름
*
* (O) showId 방송 아이디
*
* (O) showNm 방송 이름
*
* (M) trmsAgrFlag 약관 동의 여부
*
* (M) tsvFlag TSV 여부
*/
export const sendLogShopByMobile = (params) => (dispatch, getState) => {
const { logTpNo } = params;
const { entryMenu, nowMenu } = getState().common.menu;
const newParams = {
...params,
entryMenu: entryMenu,
logTpNo,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-009 / Partners 클릭 이력
*
* (M) entryMenu 진입 메뉴
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 네임
*
* (M) patnrId 파트너 아이디
*/
export const sendLogPartners = (params) => (dispatch, getState) => {
const { patncNm, patnrId } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!patncNm || !patnrId) {
dlog('[sendLogPartners] invalid params', params);
return;
}
const newParams = {
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.PARTNERS,
nowMenu: nowMenu,
patncNm,
patnrId,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-010 / Reminder - Alert On/Off
*
* (M) alertFlag 설정 여부, On / Off
*
* (M) entryMenu 진입 메뉴
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*/
export const sendLogMyPageAlertFlag = (params) => (dispatch, getState) => {
const { alertFlag } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!alertFlag) {
dlog('[sendLogMyPageAlertFlag] invalid params', params);
return;
}
const newParams = {
alertFlag,
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.MY_PAGE_ALERT_FLAG,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-011 / My Page Delete 버튼 클릭 이력
*
* (M) cnt 삭제 개수
*
* (M) entryMenu 진입 메뉴
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*/
export const sendLogMyPageMyDelete = (params) => (dispatch, getState) => {
const { cnt } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!cnt) {
dlog('[sendLogMyPageMyDelete] invalid params', params);
return;
}
const newParams = {
...params,
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.MY_PAGE_MY_DELETE,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-012 / My Page Notice View
*
* (M) entryMenu 진입 메뉴
*
* (M) itemId Notice/FAQ 등록 번호
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMneu 현재 메뉴
*
* (M) title Notice/FAQ 제목
*/
export const sendLogMyPageNotice = (params) => (dispatch, getState) => {
const { itemId, title } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!itemId || !title) {
dlog('[sendLogNoticeView] invalid params', params);
return;
}
const newParams = {
...params,
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.MY_PAGE_NOTICE,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-013 / 검색 이력
*
* (M) entryMenu 진입 메뉴
*
* (M) inputFlag 입력 구분, keyword / input
*
* (M) itemCnt 상춤 개수
*
* (M) keyword 검색어
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) showCnt 영상 개수
*
* (M) themeCnt 테마 개수
*/
export const sendLogSearch = (params) => (dispatch, getState) => {
const { inputFlag, itemCnt, keyword, showCnt, themeCnt } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!inputFlag || !itemCnt || !keyword || !showCnt || !themeCnt) {
dlog('[sendLogSearch] invalid params', params);
return;
}
const newParams = {
...params,
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.SEARCH,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-014 / 검색 결과 클릭 이력
*
* (O) curationId 큐레이션 아이디
*
* (O) curationNm 큐레이션 이름
*
* (O) dcAfPrice 할인후 가격
*
* (M) entryMenu 진입 메뉴
*
* (M) keyword 검색어
*
* (O) lgCatNm LG 카테고리 이름
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 이름
*
* (M) patnrId 파트너 아이디
*
* (O) prdtId 상품 아이디
*
* (O) prdtNm 상품 이름
*
* (O) showId 방송 아이디
*
* (O) showNm 방송 이름
*/
export const sendLogSearchClick = (params) => (dispatch, getState) => {
const { keyword, patncNm, patnrId } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!keyword || !patncNm || !patnrId) {
dlog('[sendLogSearchClick] invalid params', params);
return;
}
const newParams = {
curationId: params?.curationId ?? '',
curationNm: params?.curationNm ?? '',
dcAfPrice: params?.dcAfPrice ?? '',
entryMenu: entryMenu,
keyword,
lgCatNm: params?.lgCatNm ?? '',
logTpNo: LOG_TP_NO.SEARCH_CLICK,
nowMenu: nowMenu,
patncNm,
patnrId,
prdtId: params?.prdtId ?? '',
prdtNm: params?.prdtNm ?? '',
showId: params?.showId ?? '',
showNm: params?.showNm ?? '',
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-015 / Upcoming On/Off
*
* (M) alertFlag 알림 설정 여부 On/Off
*
* (M) entryMenu 진입 메뉴
*
* (O) hstNm 호스트 이름
*
* (M) logTpNo 로그 타입 넘버
*
* (O) lgCatCd 카테고리 코드
*
* (O) lgCatNm 카테고리 이름
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 이름
*
* (M) patnrId 파트너 아이디
*
* (M) remainSec 남은 시간(초)
*
* (M) showId 방송 아이디
*
* (M) showNm 방송 이름
*/
export const sendLogUpcomingFlag = (params) => (dispatch, getState) => {
const { items } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!items) {
dlog('[sendLogUpcomingFlag] invalid params', params);
return;
}
const newParams = {
...params,
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.UPCOMING_FLAG,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-017 / 알람 팝업
*
* (M) alarmDt 알람 방생 시간
*
* (M) alarmType 알람 유형 Upcoming/Keyword
*
* (M) cnt 키워드 개수
*
* (M) entryMenu 진입 메뉴
*
* (O) hstNm 호스트 이름
*
* (O) lgCatCd 카테고리 코드
*
* (O) lgCatNm 카테고리 이름
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 이름
*
* (M) patnrId 파트너 아이디
*
* (M) showId 방송 아이디
*
* (M) showNm 방송 이름
*/
export const sendLogAlarmPop = (params) => (dispatch, getState) => {
const { alarmDt, alarmType, cnt, patncNm, patnrId, showId, showNm } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!alarmDt || !alarmType || !cnt || !patncNm || !patnrId || !showId || !showNm) {
dlog('[sendLogAlarmPop] invalid params', params);
return;
}
const newParams = {
...params,
entryMenu: entryMenu,
hstNm: params?.hstNm ?? '',
lgCatCd: params?.lgCatCd ?? '',
lgCatNm: params?.lgCatNm ?? '',
logTpNo: LOG_TP_NO.ALARM_POP,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-018 / 알람 팝업 OK/NO 클릭
*
* (M) alarmDt 알람 발생 시간
*
* (M) alarmType 알람 유형 Upcoming/Keyword
*
* (M) clickFlag 클릭 유형 Ok/No
*
* (M) cnt 키워드 개수
*
* (M) entryMenu 진입 메뉴
*
* (O) hstNm 호스트 이름
*
* (M) keywordList 키워드 리스트(콤마 구분자)
*
* (O) lgCatCd 카테고리 코드
*
* (O) lgCatNm 카테고리 이름
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 이름
*
* (M) patnrId 파트너 아이디
*
* (M) showId 방송 아이디
*
* (M) showNm 방송 이름
*/
export const sendLogAlarmClick = (params) => (dispatch, getState) => {
const { alarmDt, alarmType, clickFlag, cnt, logTpNo, patnrId, showId } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!alarmDt || !alarmType || !clickFlag || !cnt || !logTpNo || !patnrId || !showId) {
dlog('[sendLogAlarmClick] invalid params', params);
return;
}
const newParams = {
...params,
entryMenu: entryMenu,
hstNm: params?.hstNm ?? '',
lgCatCd: params?.lgCatCd ?? '',
lgCatNm: params?.lgCatNm ?? '',
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-020 / 테마 상품 클릭 이력
*
* (M) befPrice 할인 전 가격
*
* (M) curationId 큐레이션 아이디
*
* (M) curationNm 큐레이션 이름
*
* (M) entryMenu 진입 메뉴
*
* (M) lastPrice 할인 후 가격
*
* (M) lgCatCd 카테고리 코드
*
* (M) lgCatNm 카테고리 이름
*
* (O) linkTpCd 딥링크 타입
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 이름
*
* (M) patnrId 파트너 아이디
*
* (M) prdtExpsOrd 상품 노출 순번
*
* (M) prdtId 상품 아이디
*
* (M) prdtNm 상품 이름
*
* (M) rewdAplyFlag 리워드 적용 여부
*
* (M) shelfExpsOrd 쉘프 노출 순번
*
* (M) shelfId 쉘프 아이디
*
* (M) shelfNm 쉘프 이름
*
* (M) tsvFlag TSV 여부
*/
export const sendLogThemeProduct = (params) => (dispatch, getState) => {
const { entryMenu, nowMenu } = getState().common.menu;
const newParams = {
...params,
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.THEME_PRODUCT,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-100 / TOP contents 노출 이력
*
* (M) banrNo 배너 번호
*
* (O) banrTpNm 배너 유형 이름, Vertical / Horizontal
*
* (M) contId 컨텐츠 아이디
*
* (M) contNm 컨텐츠 이름
*
* (M) contTpNm 컨텐츠 타입 이름, live / image / Today's deals
*
* (M) dspyTpNm 디스플레이 유형 이름, Random / Rolling
*
* (M) entryMenu 진입 메뉴
*
* (M) expsOrd 노출 순서
*
* (M) inDt 진입 시간
*
* (O) linkTpCd 딥링크 타입
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) outDt 진출 시간
*
* (O) patncNm 파트너 이름
*
* (O) patnrId 파트너 아이디
*
* (M) tmplCd 템플릿 코드 DSP002 01~03
*/
export const sendLogTopContents = (params) => (dispatch, getState) => {
const { entryMenu, nowMenu } = getState().common.menu;
const newParams = {
...params,
entryMenu: params?.entryMenu ?? entryMenu,
outDt: formatGMTString(new Date()),
nowMenu: params?.nowMenu ?? nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-101 / 약관 동의, 미동의 클릭 이력
*
* (M) entryMenu 진입 메뉴
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*/
export const sendLogTerms = (params) => (dispatch, getState) => {
const { logTpNo } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!logTpNo) {
dlog('[sendLogTerms] invalid params', params);
return;
}
const newParams = {
entryMenu: entryMenu,
logTpNo,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-102 / LG Account 로그인 이력
*
* (M) entryMenu 진입 메뉴
*
* (M) nowMenu 현재 메뉴
*
* (M) lginTpNm 로그인 타입 이름 TV/ShopTime
*
* (M) logTpNo 로그 타입 넘버
*
* (M) usrNo 사용자 번호
*/
export const sendLogLgAccountLogin = (params) => (dispatch, getState) => {
const { lginTpNm, usrNo } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!lginTpNm || !usrNo) {
dlog('[sendLogLgAccountLogin] invalid params', params);
return;
}
const newParams = {
...params,
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.LG_ACCOUNT_LOGIN,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-103 / Order 화면 버튼 클릭 이력
*
* (M) btnNm 버튼 이름
*
* (M) entryMenu 진입 메뉴
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
*/
export const sendLogOrderBtnClick = (params) => (dispatch, getState) => {
const { btnNm } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!btnNm) {
dlog('[sendLogOrderBtnClick] invalid params', params);
return;
}
const newParams = {
...params,
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.ORDER_BTN_CLICK,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-104 / Order 취소/반품/교환 이력 (반품/교환 삭제)
*
* (M) entryMenu 진입 메뉴
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) reqRsn 요청 사유
*
* (M) reqTpNm 요청 유형 이름 ("Cancel", "Return", "Exchange")
*
*/
export const sendLogOrderChange = (params) => (dispatch, getState) => {
const { reqRsn, reqTpNm } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!reqRsn || !reqTpNm) {
dlog('[sendLogOrderChange] invalid params', params);
return;
}
const newParams = {
...params,
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.ORDER_CHANGE,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-105 / 쿠폰 사용 이력
*
* (M) cpnSno 쿠폰 일련 번호
*
* (M) cpnTtl 쿠폰 제목
*
* (M) entryMenu 진입 메뉴
*
* (M) lgCatCd 카테고리 코드
*
* (M) lgCatNm 카테고리 이름
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 이름
*
* (M) patnrId 파트너 아이디
*
* (M) prodId 상품 아이디
*
* (M) prodNm 상품 이름
*/
export const sendLogCouponUse = (params) => (dispatch, getState) => {
// const {} = params
const { entryMenu, nowMenu } = getState().common.menu;
// if() {
// dlog('[sendLogCouponUse] invalid params', params)
// }
const newParams = {
...params,
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.COUPON_USE,
nowMenu: nowMenu,
};
// dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-108 / 결제 페이지 진입 이력
*
* (M) cartTpSno 장바구니 구분 일련번호 ("사용자ID_상품ID_일련번호")
*
* (M) cpnSno 쿠폰 일련번호
*
* (M) cpnTtl 쿠폰 제목
*
* (M) dcAftrPrc 할인 후 가격
*
* (M) dcBefPrc 할인 전 가격
*
* (M) entryMenu 진입 메뉴
*
* (M) lgCatCd 카테고리 코드
*
* (M) lgCatNm 카테고리 이름
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 이름
*
* (M) patnrId 파트너 아이디
*
* (M) prodId 상품 아이디
*
* (M) prodNm 상품 이름
*
* (M) prodOptSno 상품 옵션 일련번호
*
* (M) qty 수량
*/
export const sendLogPaymentEntry = (params) => (dispatch, getState) => {
const { cartTpSno, dcAftrPrc, dcBefPrc, patncNm, patnrId, prodId, prodNm, qty } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!cartTpSno || !dcAftrPrc || !dcBefPrc || !patncNm || !patnrId || !prodId || !prodNm || !qty) {
dlog('[sendLogPaymentEntry] invalid params', params);
return;
}
const newParams = {
...params,
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.PAYMENT_ENTRY,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-109 / 결제 완료 이력
*
* (M) cartTpSno 장바구니 구분 일련번호 ("사용자ID_상품ID_일련번호")
*
* (M) cpnSno 쿠폰 일련번호
*
* (M) cpnTtl 쿠폰 제목
*
* (M) dcAftrPrc 할인 후 가격
*
* (M) dcBefPrc 할인 전 가격
*
* (M) entryMenu 진입 메뉴
*
* (M) lgCatCd 카테고리 코드
*
* (M) lgCatNm 카테고리 이름
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 이름
*
* (M) patnrId 파트너 아이디
*
* (M) prodId 상품 아이디
*
* (M) prodNm 상품 이름
*
* (O) prodOptSno 상품 옵션 일련번호
*
* (M) qty 수량
*
* (M) usrNo 사용자 번호
*/
export const sendLogPaymentComplete = (params) => (dispatch, getState) => {
const { cartTpSno, dcAftrPrc, dcBefPrc, patncNm, patnrId, prodId, prodNm, qty, usrNo } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (
!cartTpSno ||
!dcAftrPrc ||
!dcBefPrc ||
!patncNm ||
!patnrId ||
!prodId ||
!prodNm ||
!qty ||
!usrNo
) {
dlog('[sendLogPaymentComplete] invalid params', params);
return;
}
const newParams = {
...params,
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.PAYMENT_COMPLETE,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-110 / Featured Brands View 이력
*
* (O) catCd 파트너사 카테고리 코드
*
* (O) catNm 파트너사 카테고리 네임
*
* (O) crtrId 크리에이터 아이디
*
* (O) crtrNm 크리에이터 네임
*
* (M) entryMenu 진입 메뉴
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*
* (M) patncNm 파트너 네임
*
* (M) patnrId 파트너 아이디
*
* (O) srsId 시리즈 아이디
*
* (O) srsNm 시리즈 이름
*/
export const sendLogFeaturedBrands = (params) => (dispatch, getState) => {
const { patncNm, patnrId } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!patncNm || !patnrId) {
dlog('[sendLogFeaturedBrands] invalid params', params);
return;
}
const newParams = {
catCd: params.catCd ?? '',
catNm: params.catNm ?? '',
crtrId: params.crtrId ?? '',
crtrNm: params.crtrNm ?? '',
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.BRANDS,
nowMenu: nowMenu,
patncNm,
patnrId,
srsId: params.srsId ?? '',
srsNm: params.srsNm ?? '',
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-111 / 카드, 주소 ADD/EDIT 이력
*
* (M) btnNm 버튼 이름
*
* (M) etnryMenu 진입 메뉴
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*/
export const sendLogMyInfoEdit = (params) => (dispatch, getState) => {
const { btnNm } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!btnNm) {
dlog('[sendLogMyInfoEdit] invalid params', params);
return;
}
const newParams = {
...params,
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.MY_INFO_EDIT,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
/**
* IF-LGSP-LOG-112 / Check out 화면 버튼 클릭 이력
*
* (M) btnNm 버튼 이름
*
* (M) entryMenu 진입 메뉴
*
* (M) logTpNo 로그 타입 넘버
*
* (M) nowMenu 현재 메뉴
*/
export const sendLogCheckOutBtnClick = (params) => (dispatch, getState) => {
const { btnNm } = params;
const { entryMenu, nowMenu } = getState().common.menu;
if (!btnNm) {
dlog('[sendLogCheckOutBtnClick] invalid params', params);
return;
}
const newParams = {
...params,
entryMenu: entryMenu,
logTpNo: LOG_TP_NO.CHECKOUT_BTN_CLICK,
nowMenu: nowMenu,
};
dispatch(postLog(newParams));
};
// IF-LGSP-LOG-200 / 통합 추천 로그
export const sendLogTotalRecommend = (params) => (dispatch, getState) => {
let localMacAddress;
const { entryMenu } = getState().common.menu;
const macAddress = getState().common.macAddress;
const userNumber = getState().common.appStatus.loginUserData.userNumber;
const macAddr = macAddress?.wired ? macAddress?.wired : macAddress?.wifi;
if (typeof window === 'object' && !window.PalmSystem) {
localMacAddress = '00:1A:2B:3C:4D:5E';
}
const logCreateTime = new Date().toISOString();
// dlog("#params", params);
const newParams = {
...params,
userNumber: userNumber,
macAddr: macAddr ? macAddr : localMacAddress,
entryMenu: entryMenu ? entryMenu : 'APP',
logCreateTime,
};
dispatch(postTotalLog(newParams));
};