- integrate 플래그를 활용한 통합선박 판별 로직 추가
- shipStore.js: buildDynamicPrioritySet에 integrate 조건 추가
- ShipBatchRenderer.js: 카운트 로직에 integrate 조건 추가
- shipLayer.js: isIntegratedShip 함수 개선
- 선박 모달 생성 로직 개선
- openDetailModal에서 레이더 대표 선박 자동 교체
- 통합선박의 비레이더 신호원 우선순위 기반 선택
- 모달 신호상태 아이콘 표시 통일
- ShipDetailModal.jsx: SignalFlags에 integrate 조건 추가
- 선박 아이콘과 모달의 신호상태 표시 로직 통일
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
메인프로젝트(deck.ts:274-278)와 동일하게 signalSourceCode가
RADAR이면 통합/단독 무관하게 카운트에서 항상 제외.
기존: 단독 레이더(!integrate)만 제외 → 통합 레이더가 카운트에 포함되어
VTS_RADAR 필터 ON 시 과다집계 발생
수정: 모든 레이더를 카운트 + 타임아웃 체크에서 통합 조건 제거
원인: 통합그룹의 다른 장비(AIS 등)가 삭제/다크시그널 상태일 때
레이더만 features에 남아 있으면 해당 targetId가 추가 카운트됨
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
메인프로젝트(deckStore.ts:163)와 동일하게 기존 저장된 데이터의
receivedTimestamp보다 이전 시간대의 메시지는 무시하도록 수정.
이전: 모든 메시지를 무조건 덮어씀 → 오래된 메시지가 최신 데이터를
덮어쓰거나 삭제/다크시그널 처리된 선박을 부활시킴
이후: newTimestamp < currentFeature.receivedTimestamp이면 스킵
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
문제:
- incremental count가 매 메시지마다 스토어 갱신하여 범례 실시간 변동
- targetId 중복 제거 없이 개별 장비별로 카운트되어 수치 과다
수정:
- incremental count 제거, 5초 주기 fullRecount 방식으로 복원
- updateCountsThrottled: 타임아웃 체크 + calculateCounts 통합 (5초 주기)
- calculateCounts: targetId 중복 제거 포함 정확한 카운트 계산
- mergeFeatures에서는 features/darkSignalIds만 갱신, 카운트는 5초마다
- 필터 변경/삭제 시에는 recalculateCounts로 즉시 재계산
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
countRegistry가 initialKindCounts보다 먼저 선언되어 발생한
ReferenceError 수정. initialKindCounts를 countRegistry 위로 이동.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- countCache 기반 5초 주기 O(n) 전체 카운트 → countRegistry 기반 incremental delta 카운트
- 변경된 선박만 카운트 증감 (mergeFeatures, deleteFeature, clearDarkSignals)
- fullRecount는 필터 변경/통합모드 전환 시에만 사용
- processTimeoutsThrottled 분리: 타임아웃 체크만 담당 (5초 주기)
- 미사용 parseAvetdr 함수 제거, throttle 설정 정리
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
mergeFeatures, updateCountsThrottled, deleteFeatureById,
deleteFeaturesByIds, clearDarkSignals에서 new Map()/new Set()
전체 복사를 제거하고 기존 인스턴스를 직접 mutate.
Zustand 변경 감지는 featuresVersion/darkSignalVersion
카운터로 트리거.
5000척 기준 배치당 O(5000) Map 복사 → O(batch) 변경으로 개선.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Vite 마이그레이션, OpenLayers+Deck.gl 지도 연동
- STOMP WebSocket 선박 실시간 데이터 수신
- 선박 범례/필터/카운트, 다크시그널 처리
- Ctrl+Drag 박스선택, 우클릭 컨텍스트 메뉴
- 측정도구, 상세모달, 호버 툴팁
- darkSignalIds Set 패턴, INSHORE/OFFSHORE 타임아웃
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>