import React, { useMemo } from 'react'; import type { VirtualIndicatorSnapshot } from '../../hooks/useVirtualIndicatorSnapshots'; import { buildConditionMetrics, computeMatchRate, getTrafficLightState, } from '../../utils/virtualSignalMetrics'; import VirtualSignalEqualizer from './VirtualSignalEqualizer'; import VirtualSignalTrafficLight from './VirtualSignalTrafficLight'; import VirtualConditionList from './VirtualConditionList'; import VirtualIndicatorCompareTable from './VirtualIndicatorCompareTable'; import type { VirtualCardViewMode } from '../../utils/virtualTradingStorage'; interface Props { snapshot: VirtualIndicatorSnapshot | undefined; viewMode?: VirtualCardViewMode; receiving?: boolean; className?: string; } const VirtualTargetSignalPanel: React.FC = ({ snapshot, viewMode = 'summary', receiving = false, className = '', }) => { const rows = snapshot?.rows ?? []; const isDetail = viewMode === 'detail'; const metrics = useMemo(() => buildConditionMetrics(rows), [rows]); const matchRate = useMemo( () => computeMatchRate(metrics, snapshot?.matchRate), [metrics, snapshot?.matchRate], ); const trafficState = useMemo(() => getTrafficLightState(matchRate, metrics), [matchRate, metrics]); if (rows.length === 0) { return (

전략 조건·지표 데이터 없음

); } return (
SIGNAL INTELLIGENCE & MATCH RATES
{isDetail && (
)}
); }; export default VirtualTargetSignalPanel;