178 lines
5.5 KiB
JavaScript
178 lines
5.5 KiB
JavaScript
window.__runtime_config__ = {
|
|
// API Gateway URL (단일 진입점)
|
|
GATEWAY_URL: 'http://20.1.2.3',
|
|
|
|
// 각 마이크로서비스별 URL (Ingress 라우팅)
|
|
MEMBER_URL: 'http://20.1.2.3/api/member',
|
|
AUTH_URL: 'http://20.1.2.3/api/auth',
|
|
STORE_URL: 'http://20.1.2.3/api/store',
|
|
CONTENT_URL: 'http://20.1.2.3/api/content',
|
|
RECOMMEND_URL: 'http://20.1.2.3/api/recommendation',
|
|
|
|
// 애플리케이션 설정
|
|
APP_VERSION: '1.0.0',
|
|
APP_NAME: '₩ON',
|
|
|
|
// 환경 설정
|
|
ENVIRONMENT: 'production',
|
|
DEBUG_MODE: false,
|
|
|
|
// API 설정
|
|
API_TIMEOUT: 30000,
|
|
RETRY_ATTEMPTS: 3,
|
|
|
|
// 파일 업로드 설정
|
|
MAX_FILE_SIZE: 10485760, // 10MB
|
|
ALLOWED_IMAGE_TYPES: ['image/jpeg', 'image/png', 'image/webp'],
|
|
ALLOWED_VIDEO_TYPES: ['video/mp4', 'video/webm'],
|
|
|
|
// 인증 설정
|
|
TOKEN_REFRESH_MARGIN: 300, // 5분 전 토큰 갱신
|
|
SESSION_TIMEOUT: 1800, // 30분
|
|
|
|
// UI 설정
|
|
MOBILE_BREAKPOINT: 768,
|
|
TABLET_BREAKPOINT: 1024,
|
|
|
|
// 페이지네이션 설정
|
|
DEFAULT_PAGE_SIZE: 20,
|
|
MAX_PAGE_SIZE: 100,
|
|
|
|
// 알림 설정
|
|
NOTIFICATION_TIMEOUT: 5000,
|
|
MAX_NOTIFICATIONS: 5,
|
|
|
|
// 캐시 설정
|
|
CACHE_DURATION: 300000, // 5분
|
|
|
|
// 지도 API (필요한 경우)
|
|
// KAKAO_MAP_API_KEY: '',
|
|
// NAVER_MAP_API_KEY: '',
|
|
|
|
// 소셜 로그인 (향후 확장)
|
|
// KAKAO_APP_KEY: '',
|
|
// NAVER_CLIENT_ID: '',
|
|
// GOOGLE_CLIENT_ID: '',
|
|
|
|
// 분석 도구 (필요한 경우)
|
|
// GOOGLE_ANALYTICS_ID: '',
|
|
// HOTJAR_ID: '',
|
|
|
|
// CDN 설정
|
|
IMAGE_CDN_URL: 'http://20.1.2.3/images',
|
|
STATIC_CDN_URL: 'http://20.1.2.3/static',
|
|
|
|
// 피처 플래그
|
|
FEATURES: {
|
|
AI_RECOMMENDATION: true,
|
|
VOICE_INPUT: false,
|
|
DARK_MODE: true,
|
|
OFFLINE_MODE: false,
|
|
PUSH_NOTIFICATIONS: true,
|
|
REAL_TIME_UPDATES: true,
|
|
MULTI_STORE_SUPPORT: false,
|
|
ADVANCED_ANALYTICS: true
|
|
},
|
|
|
|
// 테마 설정
|
|
THEME: {
|
|
PRIMARY_COLOR: '#1976D2',
|
|
SECONDARY_COLOR: '#FFC107',
|
|
SUCCESS_COLOR: '#4CAF50',
|
|
WARNING_COLOR: '#FF9800',
|
|
ERROR_COLOR: '#F44336',
|
|
INFO_COLOR: '#2196F3'
|
|
},
|
|
|
|
// 국제화 설정
|
|
LOCALE: 'ko-KR',
|
|
TIMEZONE: 'Asia/Seoul',
|
|
CURRENCY: 'KRW',
|
|
|
|
// 콘텐츠 생성 설정
|
|
AI_CONTENT: {
|
|
MAX_REGENERATION_COUNT: 5,
|
|
CONTENT_TYPES: ['sns_post', 'poster', 'banner'],
|
|
PLATFORMS: ['instagram', 'naver_blog', 'facebook'],
|
|
TONE_OPTIONS: ['friendly', 'professional', 'humorous', 'elegant'],
|
|
EMOTION_LEVELS: ['calm', 'normal', 'passionate', 'exaggerated']
|
|
},
|
|
|
|
// 메뉴 카테고리 기본값
|
|
DEFAULT_MENU_CATEGORIES: ['면류', '밥류', '튀김', '분식', '음료', '디저트', '기타'],
|
|
|
|
// 매장 업종 기본값
|
|
BUSINESS_TYPES: [
|
|
'한식', '중식', '일식', '양식', '분식', '치킨', '피자', '카페',
|
|
'베이커리', '아이스크림', '패스트푸드', '기타'
|
|
],
|
|
|
|
// 운영시간 기본값
|
|
DEFAULT_OPERATING_HOURS: {
|
|
WEEKDAY: { open: '09:00', close: '22:00' },
|
|
WEEKEND: { open: '10:00', close: '21:00' }
|
|
},
|
|
|
|
// 에러 메시지
|
|
ERROR_MESSAGES: {
|
|
NETWORK_ERROR: '네트워크 연결을 확인해주세요.',
|
|
TIMEOUT_ERROR: '요청 시간이 초과되었습니다.',
|
|
UNAUTHORIZED: '로그인이 필요합니다.',
|
|
FORBIDDEN: '접근 권한이 없습니다.',
|
|
NOT_FOUND: '요청한 페이지를 찾을 수 없습니다.',
|
|
SERVER_ERROR: '서버 오류가 발생했습니다.',
|
|
VALIDATION_ERROR: '입력 정보를 확인해주세요.',
|
|
FILE_SIZE_ERROR: '파일 크기가 너무 큽니다.',
|
|
FILE_TYPE_ERROR: '지원하지 않는 파일 형식입니다.'
|
|
},
|
|
|
|
// 성공 메시지
|
|
SUCCESS_MESSAGES: {
|
|
LOGIN_SUCCESS: '로그인이 완료되었습니다.',
|
|
LOGOUT_SUCCESS: '로그아웃이 완료되었습니다.',
|
|
REGISTER_SUCCESS: '회원가입이 완료되었습니다.',
|
|
UPDATE_SUCCESS: '정보가 수정되었습니다.',
|
|
DELETE_SUCCESS: '삭제가 완료되었습니다.',
|
|
SAVE_SUCCESS: '저장이 완료되었습니다.',
|
|
UPLOAD_SUCCESS: '업로드가 완료되었습니다.',
|
|
CONTENT_GENERATED: 'AI 콘텐츠가 생성되었습니다.'
|
|
},
|
|
|
|
// 확인 메시지
|
|
CONFIRM_MESSAGES: {
|
|
DELETE_CONFIRM: '정말 삭제하시겠습니까?',
|
|
LOGOUT_CONFIRM: '로그아웃 하시겠습니까?',
|
|
CANCEL_CONFIRM: '작업을 취소하시겠습니까?',
|
|
OVERWRITE_CONFIRM: '기존 내용을 덮어쓰시겠습니까?'
|
|
}
|
|
};
|
|
|
|
// 환경별 설정 오버라이드
|
|
if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {
|
|
// 개발 환경 설정
|
|
window.__runtime_config__.ENVIRONMENT = 'development';
|
|
window.__runtime_config__.DEBUG_MODE = true;
|
|
window.__runtime_config__.GATEWAY_URL = 'http://localhost:8080';
|
|
window.__runtime_config__.MEMBER_URL = 'http://localhost:8080/api/member';
|
|
window.__runtime_config__.AUTH_URL = 'http://localhost:8080/api/auth';
|
|
window.__runtime_config__.STORE_URL = 'http://localhost:8080/api/store';
|
|
window.__runtime_config__.CONTENT_URL = 'http://localhost:8080/api/content';
|
|
window.__runtime_config__.RECOMMEND_URL = 'http://localhost:8080/api/recommendation';
|
|
}
|
|
|
|
// 설정 유효성 검사
|
|
if (!window.__runtime_config__.GATEWAY_URL) {
|
|
console.error('GATEWAY_URL이 설정되지 않았습니다.');
|
|
}
|
|
|
|
// 전역 함수로 설정 노출
|
|
window.getConfig = function(key) {
|
|
return window.__runtime_config__[key];
|
|
};
|
|
|
|
window.getFeature = function(featureName) {
|
|
return window.__runtime_config__.FEATURES[featureName] || false;
|
|
};
|
|
|
|
console.log('₩ON Runtime Configuration loaded:', window.__runtime_config__.ENVIRONMENT);
|