diff --git a/frontend/src/components/korea/CorrelationPanel.tsx b/frontend/src/components/korea/CorrelationPanel.tsx index de2d050..6d1b5ee 100644 --- a/frontend/src/components/korea/CorrelationPanel.tsx +++ b/frontend/src/components/korea/CorrelationPanel.tsx @@ -203,7 +203,7 @@ const CorrelationPanel = ({
diff --git a/frontend/src/components/korea/FleetClusterLayer.tsx b/frontend/src/components/korea/FleetClusterLayer.tsx index f87590a..2ec108d 100644 --- a/frontend/src/components/korea/FleetClusterLayer.tsx +++ b/frontend/src/components/korea/FleetClusterLayer.tsx @@ -469,15 +469,20 @@ export function FleetClusterLayer({ ships, analysisMap: analysisMapProp, onShipS { + // 전역: 모든 모델의 모든 대상에 적용 (모델 on/off 무관) if (minPct === null) { - // 전체: 모든 연관 선박 ON setEnabledVessels(new Set(correlationTracks.map(v => v.mmsi))); } else { - // 해당 퍼센트 이상만 ON const threshold = minPct / 100; const filtered = new Set(); + // correlationData에서 모든 모델의 모든 대상 중 최고 score 기준 + const maxScores = new Map(); for (const c of correlationData) { - if (c.score >= threshold) filtered.add(c.targetMmsi); + const prev = maxScores.get(c.targetMmsi) ?? 0; + if (c.score > prev) maxScores.set(c.targetMmsi, c.score); + } + for (const [mmsi, score] of maxScores) { + if (score >= threshold) filtered.add(mmsi); } setEnabledVessels(filtered); }