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} */ 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) { // 함수 자체의 오류는 무시 (조용하게 처리) } }