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);
}