환영합니다! 🌟

처음 오셨군요! 3분 안에 웰니스 여정을 시작해보세요

13가지 디지털 웰니스 도구
한국 전통 치유법 포함
AI 도우미 지원
완전 무료, 가입 불필요

🌿 한국통합치유협회 KELA 웰니스 스위트

13가지 디지털 웰니스 도구로 몸과 마음의 균형을 찾아보세요

난이도 선택:

🤔 KELA 웰니스 스위트란?

한국통합치유협회(KELA)가 제공하는 디지털 웰니스 플랫폼입니다. 전통 한의학과 현대 디지털 기술을 결합하여 누구나 쉽게 일상에서 건강을 관리할 수 있도록 돕습니다.

🏥
의료 보조
스트레스, 불안 완화
🏢
직장 웰니스
업무 효율성 향상
🏫
교육 지원
집중력 향상
👴
시니어 케어
건강한 노후
🌏
글로벌 웰니스
전 세계 사용자
📱
모바일 헬스
언제 어디서나
🌬️ 호흡과 움직임
🫧
호흡 버블
4-7-8 호흡법
🧘
스트레칭 핑
2분 데스크 웰니스
📊 추적과 습관
🎨
기분 픽셀
한 해를 픽셀로 기록
중급
습관 점
미니멀 습관 트래커
💧
물방울
수분 섭취 알림

🫧 호흡 버블

숨을 들이쉬세요...

🎨 기분 픽셀

오늘 기분을 선택하세요

😔 😕 😐 🙂 😄

💧 물방울

목표: 하루 8잔

습관 점

아침 운동
명상
독서

🎵 집중 음악

25:00

🌏 웰니스 여행을 계획하고 계신가요?

전 세계 힐링 여행지의 최고 상품을 찾아보세요

${step.text}
`; document.body.appendChild(tooltip); // Position tooltip const rect = element.getBoundingClientRect(); tooltip.style.position = 'fixed'; if (step.position === 'bottom') { tooltip.style.top = rect.bottom + 10 + 'px'; tooltip.style.left = rect.left + 'px'; } else if (step.position === 'left') { tooltip.style.top = rect.top + 'px'; tooltip.style.right = (window.innerWidth - rect.left) + 10 + 'px'; } // Auto-remove after 5 seconds setTimeout(() => { if (tooltip.parentNode) { tooltip.remove(); } }, 5000); }, endTour() { document.querySelectorAll('.tour-highlight').forEach(el => { el.classList.remove('tour-highlight'); }); document.querySelectorAll('.tour-tooltip').forEach(el => { el.remove(); }); this.unlockAchievement('tutorial_master', '튜토리얼 마스터', '가이드 투어를 완료했습니다'); }, unlockAchievement(id, title, desc) { if (!this.achievements.includes(id)) { this.achievements.push(id); localStorage.setItem('kela_achievements', JSON.stringify(this.achievements)); this.showAchievementToast(title, desc); } }, showAchievementToast(title, desc) { const toast = document.getElementById('achievementToast'); document.getElementById('achievementTitle').textContent = title; document.getElementById('achievementDesc').textContent = desc; toast.classList.add('show'); setTimeout(() => { toast.classList.remove('show'); }, 3000); }, loadSavedState() { const savedDifficulty = localStorage.getItem('kela_difficulty'); if (savedDifficulty) { this.currentDifficulty = savedDifficulty; setDifficulty(savedDifficulty, false); } } }; function openModule(moduleId) { document.getElementById('homeView').style.display = 'none'; const modules = document.querySelectorAll('.module-view'); modules.forEach(m => m.classList.remove('active')); document.getElementById(moduleId).classList.add('active'); // Track usage trackEvent('module_opened', { module: moduleId }); // Initialize module-specific features if (moduleId === 'moodpixel') { initMoodGrid(); } else if (moduleId === 'waterdrop') { initWater(); } } function closeModule() { document.getElementById('homeView').style.display = 'block'; const modules = document.querySelectorAll('.module-view'); modules.forEach(m => m.classList.remove('active')); } // ========== DIFFICULTY SYSTEM ========== function setDifficulty(level, save = true) { // Update buttons document.querySelectorAll('.difficulty-btn').forEach(btn => { btn.classList.remove('active'); }); event?.target?.classList.add('active'); // Show/hide content based on difficulty if (level === 'beginner') { document.getElementById('relaxationCategory').style.display = 'none'; document.getElementById('traditionalCategory').style.display = 'none'; } else if (level === 'intermediate') { document.getElementById('relaxationCategory').style.display = 'block'; document.getElementById('traditionalCategory').style.display = 'none'; } else if (level === 'expert') { document.getElementById('relaxationCategory').style.display = 'block'; document.getElementById('traditionalCategory').style.display = 'block'; } // Save preference if (save) { localStorage.setItem('kela_difficulty', level); OnboardingManager.currentDifficulty = level; // Show notification showNotification(`난이도가 ${level}로 변경되었습니다`); } } // ========== BREATH BUBBLE ========== let breathingInterval; let breathingPhase = 0; function startBreathing() { const phases = [ { text: '숨을 들이쉬세요...', duration: 4000 }, { text: '숨을 멈추세요...', duration: 7000 }, { text: '숨을 내쉬세요...', duration: 8000 } ]; function nextPhase() { document.getElementById('breathText').textContent = phases[breathingPhase].text; breathingPhase = (breathingPhase + 1) % phases.length; } stopBreathing(); nextPhase(); let totalDuration = phases.reduce((sum, p) => sum + p.duration, 0); breathingInterval = setInterval(nextPhase, totalDuration / phases.length); // Track and achievement setTimeout(() => { OnboardingManager.unlockAchievement('first_breath', '첫 호흡', '첫 호흡 세션을 완료했습니다'); showOTA(); }, totalDuration); } function stopBreathing() { if (breathingInterval) { clearInterval(breathingInterval); breathingInterval = null; } } // ========== MOOD PIXEL ========== let currentMood = 3; function setMood(mood) { currentMood = mood; const today = new Date().getDate() - 1; const pixels = document.querySelectorAll('.mood-pixel'); if (pixels[today]) { const colors = ['#8B0000', '#FF4500', '#FFD700', '#90EE90', '#00FF00']; pixels[today].style.background = colors[mood - 1]; // Save to localStorage let moodData = JSON.parse(localStorage.getItem('kela_mood_data') || '{}'); moodData[new Date().toISOString().split('T')[0]] = mood; localStorage.setItem('kela_mood_data', JSON.stringify(moodData)); showNotification('기분이 기록되었습니다'); } } function initMoodGrid() { const grid = document.getElementById('moodGrid'); if (grid && !grid.hasChildNodes()) { for (let i = 0; i < 365; i++) { const pixel = document.createElement('div'); pixel.className = 'mood-pixel'; grid.appendChild(pixel); } // Load saved mood data const moodData = JSON.parse(localStorage.getItem('kela_mood_data') || '{}'); const colors = ['#8B0000', '#FF4500', '#FFD700', '#90EE90', '#00FF00']; Object.entries(moodData).forEach(([date, mood]) => { const dayOfYear = Math.floor((new Date(date) - new Date(new Date().getFullYear(), 0, 0)) / 86400000); if (grid.children[dayOfYear]) { grid.children[dayOfYear].style.background = colors[mood - 1]; } }); } } // ========== WATER DROP ========== function initWater() { const container = document.getElementById('waterContainer'); if (container && !container.hasChildNodes()) { for (let i = 0; i < 8; i++) { const glass = document.createElement('div'); glass.className = 'water-glass'; glass.onclick = function() { this.classList.toggle('filled'); updateWaterCount(); }; container.appendChild(glass); } // Load saved water data const waterData = JSON.parse(localStorage.getItem('kela_water_today') || '0'); for (let i = 0; i < waterData; i++) { if (container.children[i]) { container.children[i].classList.add('filled'); } } } } function updateWaterCount() { const filled = document.querySelectorAll('.water-glass.filled').length; localStorage.setItem('kela_water_today', filled); if (filled === 8) { OnboardingManager.unlockAchievement('hydration_hero', '수분 충족', '하루 물 섭취 목표를 달성했습니다'); } } // ========== HABIT DOTS ========== function toggleDot(dot) { dot.classList.toggle('done'); // Save habit data const habits = {}; document.querySelectorAll('.habit-item').forEach((item, index) => { const name = item.querySelector('.habit-name').textContent; const dots = Array.from(item.querySelectorAll('.habit-dot')).map(d => d.classList.contains('done')); habits[name] = dots; }); localStorage.setItem('kela_habits', JSON.stringify(habits)); // Check for streak const allDone = Array.from(document.querySelectorAll('.habit-dot')).every(d => d.classList.contains('done')); if (allDone) { OnboardingManager.unlockAchievement('habit_master', '습관 마스터', '모든 습관을 완료했습니다'); } } // ========== POMODORO TIMER ========== let pomodoroTime = 25 * 60; let pomodoroInterval; function startPomodoro() { if (!pomodoroInterval) { pomodoroInterval = setInterval(() => { pomodoroTime--; updatePomodoroDisplay(); if (pomodoroTime <= 0) { clearInterval(pomodoroInterval); pomodoroInterval = null; showNotification('휴식 시간입니다!'); OnboardingManager.unlockAchievement('focus_master', '집중 마스터', '포모도로 세션을 완료했습니다'); } }, 1000); } } function pausePomodoro() { if (pomodoroInterval) { clearInterval(pomodoroInterval); pomodoroInterval = null; } } function resetPomodoro() { pausePomodoro(); pomodoroTime = 25 * 60; updatePomodoroDisplay(); } function updatePomodoroDisplay() { const minutes = Math.floor(pomodoroTime / 60); const seconds = pomodoroTime % 60; const display = document.getElementById('pomodoroTimer'); if (display) { display.textContent = `${minutes}:${seconds.toString().padStart(2, '0')}`; } } // ========== OTA FUNCTIONS ========== function showOTA() { const otaContainer = document.getElementById('otaContainer'); if (otaContainer && !otaContainer.classList.contains('show')) { otaContainer.classList.add('show'); trackEvent('ota_shown', { trigger: 'module_completion' }); } } // ========== AI ASSISTANT ========== function selectAI(aiType) { switch(aiType) { case 'chatgpt': const context = `KELA Wellness Suite에 대해 도움이 필요합니다. 13가지 웰니스 도구를 제공하는 건강 플랫폼입니다.`; window.open(`https://chat.openai.com/?q=${encodeURIComponent(context)}`, '_blank'); closeWiaAiModal(); break; case 'claude': const claudeContext = `KELA Wellness Suite 사용법을 알려주세요. 한국통합치유협회의 디지털 웰니스 플랫폼입니다.`; window.open(`https://claude.ai/chat?q=${encodeURIComponent(claudeContext)}`, '_blank'); closeWiaAiModal(); break; case 'gemini': showGeminiChat(); break; } trackEvent('ai_selected', { type: aiType }); } function showGeminiChat() { document.getElementById('aiSelector').style.display = 'none'; document.getElementById('geminiChat').style.display = 'flex'; document.getElementById('aiModalTitle').textContent = '✨ Gemini AI 도우미'; // Add initial message if (!document.getElementById('chatMessages').hasChildNodes()) { addMessage('assistant', 'KELA 웰니스에 대해 무엇이든 물어보세요!'); } } function addMessage(type, content) { const chatMessages = document.getElementById('chatMessages'); const messageDiv = document.createElement('div'); messageDiv.className = `message ${type}`; messageDiv.textContent = content; chatMessages.appendChild(messageDiv); chatMessages.scrollTop = chatMessages.scrollHeight; } async function sendToGemini() { const input = document.getElementById('geminiInput'); const message = input.value.trim(); if (!message) return; addMessage('user', message); input.value = ''; // Simulate API response (replace with actual Gemini API call) setTimeout(() => { addMessage('assistant', `${message}에 대한 답변입니다. KELA 웰니스 도구를 사용해보세요.`); }, 1000); } // ========== UTILITY FUNCTIONS ========== function showNotification(message, type = 'success') { const toast = document.getElementById('toast'); toast.textContent = message; toast.className = `toast show ${type}`; setTimeout(() => { toast.classList.remove('show'); }, 3000); } function skipWelcome() { document.getElementById('welcomeModal').classList.remove('show'); localStorage.setItem('kela_visited', 'true'); } function startTour() { OnboardingManager.startTour(); } function trackEvent(eventName, data = {}) { // Analytics tracking console.log('Track Event:', eventName, data); // Save to localStorage for offline analytics const events = JSON.parse(localStorage.getItem('kela_events') || '[]'); events.push({ event: eventName, data: data, timestamp: new Date().toISOString() }); localStorage.setItem('kela_events', JSON.stringify(events)); } // ========== INITIALIZATION ========== document.addEventListener('DOMContentLoaded', function() { // Load saved language const savedLang = localStorage.getItem('kela_language') || 'ko'; document.getElementById('languageSelector').value = savedLang; currentLanguage = savedLang; updateTranslations(); // Initialize onboarding OnboardingManager.init(); // ESC key to close modals document.addEventListener('keydown', function(e) { if (e.key === 'Escape') { closeWiaAiModal(); document.getElementById('welcomeModal').classList.remove('show'); } }); document.getElementById('welcomeModal').addEventListener('click', function(e) { if (e.target === this) { skipWelcome(); } }); // Enter key for Gemini chat document.getElementById('geminiInput')?.addEventListener('keypress', function(e) { if (e.key === 'Enter') { sendToGemini(); } }); // Reset water count daily const lastWaterReset = localStorage.getItem('kela_water_reset'); const today = new Date().toDateString(); if (lastWaterReset !== today) { localStorage.setItem('kela_water_today', '0'); localStorage.setItem('kela_water_reset', today); } // Track page view trackEvent('page_view', { tool: TOOL_CONFIG.name, category: TOOL_CONFIG.category, language: currentLanguage }); });

📰 The Korean Today × Your City 📰

1,558 Cities Worldwide | Start your journey as a global journalist in your city

Become a Bureau Chief