import React from 'react' import { Brain, RefreshCw } from 'lucide-react' import { TradingChart } from './TradingChart' const formatTime = (isoStr?: string) => { if (!isoStr) return null const d = new Date(isoStr) return d.toLocaleTimeString('ko-KR', { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false, timeZone: 'Asia/Seoul' }) } interface ChartPanelProps { chartData: any[] | null | undefined chartLoading: boolean selectedStock: string chartPeriod: 'D' | 'W' | 'M' onPeriodChange: (period: 'D' | 'W' | 'M') => void stockName: string } const ChartPanel = React.memo(({ chartData, chartLoading, selectedStock, chartPeriod, onPeriodChange, stockName, }: ChartPanelProps) => { return (

{stockName || '종목을 선택해주세요'} {selectedStock && ( {selectedStock} )}

{(['D', 'W', 'M'] as const).map((p) => ( ))}
{chartLoading ? (
차트 로딩중...
) : chartData && chartData.length > 0 ? ( ) : (
데이터가 없습니다.
)}
) }) ChartPanel.displayName = 'ChartPanel' // AI 분석 패널 — ChartPanel과 같은 파일에 배치 (center column 분리용) interface AiAnalysisPanelProps { aiAnalysisData: { analysis: string; data: any } | null | undefined } export const AiAnalysisPanel = React.memo(({ aiAnalysisData }: AiAnalysisPanelProps) => { const aiAnalysisText = aiAnalysisData?.analysis || null return (

AI 투자 분석

{aiAnalysisData?.data?.analyzed_at && ( {formatTime(aiAnalysisData.data.analyzed_at)} )}
{aiAnalysisText ? ( typeof aiAnalysisText === 'string' ? aiAnalysisText : JSON.stringify(aiAnalysisText, null, 2) ) : (

종목을 선택하면
AI 투자 분석을 표시합니다.

)}
) }) AiAnalysisPanel.displayName = 'AiAnalysisPanel' export default ChartPanel