diff --git a/prototype/gemini.zip b/prototype/gemini.zip new file mode 100644 index 0000000..964b143 Binary files /dev/null and b/prototype/gemini.zip differ diff --git a/prototype/opus.jsx b/prototype/opus.jsx new file mode 100644 index 0000000..3909d74 --- /dev/null +++ b/prototype/opus.jsx @@ -0,0 +1,1720 @@ +import React, { useState, useEffect } from 'react'; + +const MacroEconomicSimulator = () => { + const [currentStep, setCurrentStep] = useState(1); + const [inputMode, setInputMode] = useState('slider'); + const [naturalInput, setNaturalInput] = useState(''); + const [isAnalyzing, setIsAnalyzing] = useState(false); + const [activeAgent, setActiveAgent] = useState(null); + const [showConsensus, setShowConsensus] = useState(false); + + // 현재 실제 경제 지표 (API에서 가져온 것처럼) + const currentIndicators = { + exchangeRate: { value: 1380, unit: '₩/$', name: '원/달러 환율', trend: 'up' }, + baseRate: { value: 3.50, unit: '%', name: '기준금리', trend: 'stable' }, + cpi: { value: 3.2, unit: '%', name: '소비자물가 상승률', trend: 'down' }, + gdpGrowth: { value: 2.1, unit: '%', name: 'GDP 성장률', trend: 'up' }, + unemployment: { value: 3.7, unit: '%', name: '실업률', trend: 'stable' }, + oilPrice: { value: 78, unit: '$', name: '국제유가 (WTI)', trend: 'up' } + }; + + // 사용자가 설정한 시뮬레이션 값 + const [simValues, setSimValues] = useState({ + exchangeRate: 1380, + baseRate: 3.50, + cpi: 3.2, + gdpGrowth: 2.1, + unemployment: 3.7, + oilPrice: 78 + }); + + const indicatorRanges = { + exchangeRate: { min: 1100, max: 1600, step: 10 }, + baseRate: { min: 0, max: 7, step: 0.25 }, + cpi: { min: -1, max: 10, step: 0.1 }, + gdpGrowth: { min: -5, max: 10, step: 0.1 }, + unemployment: { min: 1, max: 15, step: 0.1 }, + oilPrice: { min: 30, max: 150, step: 1 } + }; + + const agents = [ + { + id: 'consumer', + name: '소비자', + role: 'Consumer Representative', + color: '#10b981', + icon: '👤', + perspective: '가계 경제 관점', + thinking: '환율 상승으로 인해 수입품 가격이 오르고, 해외여행 비용이 증가합니다. 특히 에너지와 식료품 가격 상승이 실질 구매력을 약화시킬 것으로 보입니다. 다만 금리 인상 시 예금 이자 수익은 증가할 수 있습니다.', + position: '소비 위축 우려' + }, + { + id: 'business', + name: '기업', + role: 'Corporate Sector', + color: '#3b82f6', + icon: '🏢', + perspective: '기업 경영 관점', + thinking: '수출 기업에게 환율 상승은 가격 경쟁력 제고의 기회입니다. 그러나 원자재 수입 비용 증가와 금리 인상에 따른 자금 조달 비용 상승은 부담 요인입니다. 업종별로 명암이 갈릴 것으로 예상됩니다.', + position: '업종별 차별화' + }, + { + id: 'government', + name: '정부', + role: 'Fiscal Authority', + color: '#8b5cf6', + icon: '🏛', + perspective: '재정 정책 관점', + thinking: '물가 안정과 경기 부양 사이의 균형이 필요합니다. 취약계층 지원을 위한 선별적 재정 지출을 검토하되, 재정 건전성도 고려해야 합니다. 환율 급등 시 외환시장 안정화 조치를 준비하고 있습니다.', + position: '선별적 재정 대응' + }, + { + id: 'centralbank', + name: '중앙은행', + role: 'Monetary Authority', + color: '#f59e0b', + icon: '🏦', + perspective: '통화 정책 관점', + thinking: '환율 상승에 따른 수입 물가 상승은 인플레이션 압력을 높입니다. 물가 안정 목표(2%)를 고려할 때 기준금리 인상 압력이 존재하나, 경기 둔화 우려도 함께 살펴야 합니다. 금융 안정에도 주의를 기울이고 있습니다.', + position: '긴축 기조 유지' + }, + { + id: 'bank', + name: '시중은행', + role: 'Commercial Banking', + color: '#ec4899', + icon: '💳', + perspective: '금융 중개 관점', + thinking: '기준금리 인상은 예대마진 확대로 이어질 수 있으나, 대출 수요 감소와 부실 위험 증가를 동반합니다. 가계부채 연착륙을 위한 리스크 관리가 중요하며, 기업 대출 심사도 강화할 필요가 있습니다.', + position: '리스크 관리 강화' + } + ]; + + const getDelta = (key) => { + const current = currentIndicators[key].value; + const sim = simValues[key]; + const delta = sim - current; + return delta; + }; + + const formatDelta = (key) => { + const delta = getDelta(key); + if (delta === 0) return null; + const sign = delta > 0 ? '+' : ''; + const decimals = key === 'exchangeRate' || key === 'oilPrice' ? 0 : 1; + return `${sign}${delta.toFixed(decimals)}`; + }; + + const handleStartSimulation = () => { + setCurrentStep(3); + setIsAnalyzing(true); + + // 에이전트별로 순차적으로 분석 + agents.forEach((agent, idx) => { + setTimeout(() => { + setActiveAgent(agent.id); + }, idx * 1200); + }); + + // 모든 분석 완료 후 합의 도출 + setTimeout(() => { + setIsAnalyzing(false); + setShowConsensus(true); + }, agents.length * 1200 + 800); + }; + + return ( +
+ {/* Subtle Grid Background */} +
+ + {/* Navigation */} + + +
+ {/* Step 1: Current Economic Situation */} + {currentStep === 1 && ( +
+
+
+

STEP 01

+

현재 경제 상황

+

+ 실시간 경제 지표를 확인하고 시뮬레이션을 시작하세요 +

+
+
+ + Live Data +
+
+ +
+ {Object.entries(currentIndicators).map(([key, data], idx) => ( +
+
+ {data.name} + + {data.trend === 'up' ? '↑' : data.trend === 'down' ? '↓' : '→'} + +
+
+ {data.value.toLocaleString()} + {data.unit} +
+
+ ))} +
+ +
+ +
+
+ )} + + {/* Step 2: Scenario Setting */} + {currentStep === 2 && ( +
+
+
+

STEP 02

+

시나리오 설정

+

+ 경제 지표를 조정하여 가상의 시나리오를 만들어보세요 +

+
+
+ + {/* Input Mode Toggle */} +
+
+ + +
+
+ + {inputMode === 'slider' ? ( +
+ {Object.entries(currentIndicators).map(([key, data], idx) => { + const range = indicatorRanges[key]; + const delta = getDelta(key); + const deltaFormatted = formatDelta(key); + const percentage = ((simValues[key] - range.min) / (range.max - range.min)) * 100; + + return ( +
+
+ {data.name} + {deltaFormatted && ( + 0 ? 'rgba(239, 68, 68, 0.1)' : 'rgba(16, 185, 129, 0.1)', + color: delta > 0 ? '#ef4444' : '#10b981' + }}> + {deltaFormatted} {data.unit} + + )} +
+ +
+
+ 현재 + {data.value.toLocaleString()} +
+ + + +
+ 시뮬레이션 + + {simValues[key].toLocaleString()} + {data.unit} + +
+
+ +
+
+
+ {/* Current value marker */} +
+
+ 현재 +
+
+ setSimValues({ + ...simValues, + [key]: parseFloat(e.target.value) + })} + style={styles.sliderInput} + /> +
+ +
+ {range.min.toLocaleString()} + {range.max.toLocaleString()} +
+
+ ); + })} +
+ ) : ( +
+
+