[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:
85
com.twin.app.shoptime/src/api/logServerClient.js
Normal file
85
com.twin.app.shoptime/src/api/logServerClient.js
Normal 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) {
|
||||
// 함수 자체의 오류는 무시 (조용하게 처리)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user