fix: 점수 표시 8000→80 + 강조마커 위치 중앙정렬 + 클러스터 eps 3NM
- AnalysisStatsPanel: score*100 제거 (이미 0~100 정수) - KoreaMap: 불법어선 펄스 링 position:relative+absolute로 선박 아이콘 중앙 오버레이 - fleet.py: DBSCAN spatial_eps_nm 10→3 (116척 단일 클러스터 해소) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
부모
4c9eebab50
커밋
a009534c35
@ -320,7 +320,7 @@ export function AnalysisStatsPanel({ stats, lastUpdated, isLoading, analysisMap,
|
||||
{item.mmsi}
|
||||
</span>
|
||||
<span style={{ color, fontWeight: 700, fontSize: 10, flexShrink: 0 }}>
|
||||
{Math.round(item.score * 100)}점
|
||||
{item.score}점
|
||||
</span>
|
||||
<span style={{ color: '#94a3b8', fontSize: 9, flexShrink: 0 }}>▶</span>
|
||||
</div>
|
||||
|
||||
@ -240,21 +240,25 @@ export function KoreaMap({ ships, allShips, aircraft, satellites, layers, osintF
|
||||
return classifyFishingZone(s.lat, s.lng).zone !== 'OUTSIDE';
|
||||
}).slice(0, 200).map(s => (
|
||||
<Marker key={`illegal-${s.mmsi}`} longitude={s.lng} latitude={s.lat} anchor="center">
|
||||
<div style={{ position: 'relative', pointerEvents: 'none' }}>
|
||||
{/* 강조 펄스 링 — 선박 아이콘 중앙에 오버레이 */}
|
||||
<div style={{
|
||||
width: 20, height: 20, borderRadius: '50%',
|
||||
width: 24, height: 24, borderRadius: '50%',
|
||||
border: '2px solid #ef4444',
|
||||
backgroundColor: 'rgba(239, 68, 68, 0.2)',
|
||||
backgroundColor: 'rgba(239, 68, 68, 0.15)',
|
||||
animation: 'pulse 2s infinite',
|
||||
pointerEvents: 'none',
|
||||
boxShadow: '0 0 8px rgba(239, 68, 68, 0.4)',
|
||||
}} />
|
||||
{/* 선박명 — 아이콘 아래 */}
|
||||
<div style={{
|
||||
position: 'absolute', top: 26, left: '50%', transform: 'translateX(-50%)',
|
||||
fontSize: 8, fontWeight: 700, color: '#ef4444',
|
||||
textShadow: '0 0 2px #000, 0 0 2px #000',
|
||||
textAlign: 'center', marginTop: -2,
|
||||
whiteSpace: 'nowrap', pointerEvents: 'none',
|
||||
whiteSpace: 'nowrap',
|
||||
}}>
|
||||
{s.name || s.mmsi}
|
||||
</div>
|
||||
</div>
|
||||
</Marker>
|
||||
))}
|
||||
{/* Transship suspect labels — Marker DOM, inline styles kept for dynamic border color */}
|
||||
|
||||
@ -10,7 +10,7 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
def detect_group_clusters(
|
||||
vessel_snapshots: list[dict],
|
||||
spatial_eps_nm: float = 10.0,
|
||||
spatial_eps_nm: float = 3.0,
|
||||
time_eps_hours: float = 2.0,
|
||||
min_vessels: int = 3,
|
||||
) -> dict[int, list[dict]]:
|
||||
|
||||
불러오는 중...
Reference in New Issue
Block a user