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)
) : (
)}
)
})
AiAnalysisPanel.displayName = 'AiAnalysisPanel'
export default ChartPanel