기존 대상선박 전용 우클릭 메뉴를 모든 선박 아이콘으로 확장.
선명 복사, MMSI 복사 항목을 상단에 추가하고,
항적조회는 대상선박(isPermitted)에만 조건부 표시.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
다중 항적 조회 모달에서 반복 선택을 줄이기 위해 선박 그룹 관리 기능 추가.
계정별 localStorage 영속화(usePersistedState), 최대 10개 그룹, 동명 덮어쓰기.
그리드 헤더 클릭으로 6개 컬럼 asc/desc 정렬, 푸터에 선택 초기화 버튼 추가.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 대상 선박 멀티 선택 모달 (features/vesselSelect, widgets/vesselSelect)
· 업종/상태 필터 분리 + 그룹별 전체 on/off
· 드래그 선택 (클릭+드래그로 범위 체크/언체크)
· 기간 프리셋 7/14/21/28일, 최대 조회 28일 제한(초과 시 자동 조정)
· MAX_VESSEL_SELECT=20, MAX_QUERY_DAYS=28
- trackReplay 확장: beginMultiQuery, queryMultiTrack, 다중 CSV 내보내기
- GlobalTrackReplayPanel: 기간 편집/재조회, 선박 목록 on/off 토글
- 경고 브리딩 효과: filled circle → stroked ring
· Globe: zoom-interpolated offset 기반 반경
· Mercator: ScatterplotLayer → IconLayer + SVG ring (깜빡임 해결)
- hideLiveShips 조회 시 기본 체크
- Topbar "다중항적" 버튼 강조 스타일
- 공지사항 id:2 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
gc-wing-simple의 SVG 기반 선종별 아이콘 시스템을 도입하여 기타 AIS 선박을
8종 선종별 색상+형태(이동:화살표/정지:원형)로 구분하고, 대상 선박에는
legacy code 색상 + 브리딩 링 강조 효과를 적용한다.
- shipKind.ts: 선종별 SVG 생성기 + 아이콘 스펙 사전 생성
- Mercator: 기타 AIS 20px SVG IconLayer, 대상 선박 26px SVG IconLayer
- Globe: signalKindCode 기반 색상, 대상 선박 1.3x 크기
- 브리딩 rAF: 시안(선택)/주황(강조) 링, 2000ms 주기
- 범례: "기타 AIS(선종)" 7항목으로 변경
- shipIconCache.ts, SHIP_ICON_MAPPING 삭제
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- features/announcement/ 자체 완결 블록 (타입, 상수, 훅, 모달 UI)
- useAnnouncementPopup: lastSeenAnnouncementId 기반 계정별 1회 표시
- AnnouncementModal: 업데이트 안내 (Ocean 맵/자유시점/선박사진)
- Ocean DEFAULT_OCEAN_MAP_SETTINGS: depthStops 빈 배열 (네이티브 색상 유지)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
MapTiler Ocean 완전 스타일 기반 별도 베이스맵 모드.
features/oceanMap/ 자체 완결 블록 — 기존 enhanced 코드 변경 없음.
- resolveOceanStyle: Ocean style.json fetch + 한국어 라벨
- useOceanMapSettings: 런타임 커스텀 (수심색상/등심선/hillshade/라벨)
- OceanMapSettingsPanel: 9개 섹션 설정 UI
- 사이드바 Ocean 토글 + 설정 패널 baseMap 분기
- resolveMapStyle dynamic import로 번들 분리
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- AIS 타겟에 shipImagePath/shipImageCount 필드 추가
- 선박 이미지 API 연동 (fetchShipImagesByImo)
- 지도 위 사진 인디케이터 (ScatterplotLayer)
- 호버 툴팁에 썸네일 표시
- 정보 패널 카드 갤러리 (스크롤+화살표)
- 고화질 이미지 모달 (initialIndex 지원)
- Vite 프록시 /shipimg 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- shipData를 ref로 관리하여 AIS poll마다 effect 재실행 방지
- isStyleLoaded 가드 제거 → try/catch로 즉시 실행
- duration 700→400ms로 단축
- selectedMmsi만 의존성으로 → 선택 시 1회만 fly-to 실행
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- mapInitiatedSelectRef 도입: 지도 클릭 선택과 패널 선택을 구분
- 좌측 패널(선박 목록, 알람 목록) 선택 시 해당 위치로 fly-to
- 지도에서 직접 클릭/우클릭 선택 시에는 fly-to 비활성화
- onMapSelectMmsi 래퍼로 지도 내 선택 경로 통합 (Globe+Mercator)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Part A — 오버레이 라인 가시성:
- Globe/Mercator 쌍끌이·FC·선단 라인 굵기 ~2x 증가
- Globe 범위 원·선단 원 대시 패턴 추가
- Globe 오버레이 호버 시 브리딩(breathing) 맥동 rAF
Part B — 경고 선박 강조:
- DashboardPage → Map3D alarmMmsiMap 전달
- Globe: 경고 맥동 레이어(ships-globe-alarm-pulse) + 배지(ships-globe-alarm-badge)
- Mercator: Deck.gl ScatterplotLayer 맥동 + TextLayer 배지
- 경고 종류별 배지(이/수/환/휴/A), z-index 상향, 호버 스케일 확대
- 경고 필터 OFF 시 맥동/배지 자동 비표시
Part C — Mercator 선명 라벨:
- MapLibre 라벨 → Deck.gl TextLayer 교체 (z-order 안정)
Part D — 프로젝션 전환 안정화:
- Globe→Mercator 전환 시 Globe custom layer 맵에서 분리
- alarm rAF에 projectionBusyRef 가드 추가
- overlay.setProps() stale WebGL 자원 참조 방지
Part E — 김개발(DEV) 모드 더미 데이터:
- mockOverlayData.ts: 서해 12척 가상 선박 (5종 경고 시나리오)
- 김개발 로그인 시 자동 주입, 일반 계정 미노출
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 통계 펼치기 버튼을 topbar 내부에서 하단 우측 탭으로 이동
- 통계 바를 absolute→flow 레이아웃으로 변경 (지도 줌 겹침 방지)
- 모바일 grid-rows를 auto로 변경하여 통계 바 높이 수용
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>