[251215] fix: FeaturedBrandsPanel Log추가

🕐 커밋 시간: 2025. 12. 15. 09:38:59

📊 변경 통계:
  • 총 파일: 3개
  • 추가: +30줄

📁 추가된 파일:
  + com.twin.app.shoptime/src/api/logServerClient.js

📝 수정된 파일:
  ~ com.twin.app.shoptime/src/api/TLogEvent.js
  ~ com.twin.app.shoptime/src/views/FeaturedBrandsPanel/FeaturedBrandsPanel.jsx

🔧 주요 변경 내용:
  • API 서비스 레이어 개선
  • 소규모 기능 개선
This commit is contained in:
2025-12-15 09:39:00 +09:00
parent e424ab761c
commit 42f58bf10c
3 changed files with 115 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ import axios from "axios";
import { createQueryString } from "../utils/helperMethods";
import { getUrl } from "./apiConfig";
import { DEBUG_LOG_MODE, sendToLogServer } from "./logServerClient";
export const TLogEvent = (
dispatch,
@@ -68,6 +69,23 @@ export const TLogEvent = (
prodCd,
};
}
// ===== DEBUG_LOG_MODE: 로그서버로 데이터 전송 =====
if (DEBUG_LOG_MODE) {
sendToLogServer({
deviceId: dvcId,
cntryCd,
platCd,
prodCd,
appVersion,
deviceLang,
logModel: model,
apiUrl: url,
httpMethod: type,
totalLogFlag,
});
}
let axiosInstance;
switch (type) {

View File

@@ -0,0 +1,85 @@
import axios from 'axios';
// ===== DEBUG_LOG_MODE =====
// true: 로그서버로 데이터 전송
// false: 로그서버 전송 안함
export const DEBUG_LOG_MODE = false;
// ===== 로그서버 기본 설정 =====
const LOG_SERVER_URL = 'http://api.optsoft.store:55003/api/logs/realtime';
/**
* TLogEvent에서 보낸 데이터를 로그서버로 전송
*
* @param {Object} logData - TLogEvent에서 보낸 로그 데이터 (params + 추가 정보)
* @param {string} logData.deviceId - 디바이스 ID
* @param {string} logData.cntryCd - 국가 코드 (또는 countryCode)
* @param {string} logData.platCd - 플랫폼 코드
* @param {string} logData.prodCd - 제품 코드
* @param {string} logData.appVersion - 앱 버전
* @param {Object} logData.logModel - TLogEvent가 axios로 보낼 모델 객체
* @param {string} logData.apiUrl - API 엔드포인트
* @param {string} logData.httpMethod - HTTP 메서드 (get, post)
*
* @returns {Promise<void>}
*/
export async function sendToLogServer(logData) {
if (!DEBUG_LOG_MODE) {
return;
}
try {
// TLogEvent에서 전달된 messageId 사용, 없으면 null
const messageId = (logData.logModel && logData.logModel.messageId) || null;
// 로그서버에 전송할 데이터 구성
const logPayload = {
// ===== 필수 필드 =====
deviceId: logData.deviceId || logData.dvcId || 'unknown',
messageId: messageId,
logCreateTime: new Date().toISOString(),
// ===== 로그 기본 정보 =====
eventType: 'api_call',
apiUrl: logData.apiUrl || 'unknown',
httpMethod: logData.httpMethod || 'POST',
// ===== 디바이스 & 앱 정보 =====
countryCode: logData.countryCode || logData.cntryCd || 'unknown',
platformCode: logData.platformCode || logData.platCd || 'unknown',
platformVersion: logData.platformVersion || logData.prodCd || 'unknown',
appVersion: logData.appVersion || 'unknown',
deviceLang: logData.deviceLang || 'unknown',
// ===== 로그 타입별 데이터 =====
logTpNo: logData.logTpNo || logData.logType || 'unknown',
entryMenu: logData.entryMenu || 'unknown',
nowMenu: logData.nowMenu || 'unknown',
// ===== TLogEvent 원본 데이터 (model) =====
...(logData.logModel || {}),
};
// console.log('[logServerClient] Sending log to server - Full Payload:', logPayload);
// console.log('[logServerClient] Input logData:', logData);
// 로그서버로 전송 (비동기, 응답 대기 안함)
axios.post(LOG_SERVER_URL, logPayload, {
timeout: 5000, // 5초 타임아웃
headers: {
'Content-Type': 'application/json',
},
}).then((response) => {
// 성공 시 조용하게 처리
}).catch((error) => {
// 로그서버 전송 실패 시만 오류 로그 출력
console.error('[logServerClient] Failed to send log to server:', {
url: LOG_SERVER_URL,
error: error.message,
messageId: messageId,
});
});
} catch (error) {
// 함수 자체의 오류는 무시 (조용하게 처리)
}
}

View File

@@ -1054,6 +1054,18 @@ const FeaturedBrandsPanel = ({ isOnTop, panelInfo, spotlightId }) => {
}
}, [isLogGNBSent, isInitialFocusOccurred, selectedPatnrId, selectedPatncNm]);
// effect: partners log for NBCU (patnrId=21)
useEffect(() => {
if (selectedPatnrId === 21 && selectedPatncNm) {
dispatch(
sendLogPartners({
patncNm: selectedPatncNm,
patnrId: selectedPatnrId,
})
);
}
}, [selectedPatnrId, selectedPatncNm]);
// effect: unmount
useEffect(() => {
return () => {