커밋 그래프

54 커밋

작성자 SHA1 메시지 날짜
168bea0621 feat(map): 오버레이 가시성 개선 + 경고 선박 강조
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>
2026-02-17 10:52:51 +09:00
86a0b2276f fix(web): vessel-track 안정화 반영
- Mercator/Globe track-replay 레이어 충돌 및 setProps 레이스 해결
- track DTO 좌표/시간 정규화 + stale query 응답 무시
- 조회 직후 표시 안정화 및 기본 100x 자동재생 적용
- Global Track Replay 패널 초기 위치 조정 + 헤더 드래그 지원
- liveRenderer batch rendering + trackReplay store 기반 구조 반영

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 22:43:08 +09:00
c09211d5ed chore: develop 병합으로 충돌 해결
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 22:21:15 +09:00
6acf2045b2 chore: vessel-track 브랜치 병합 (squash)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 22:12:48 +09:00
cb6493b8a1 feat(weather): 기상 타일 오버레이 + 수역별 날씨 패널
MapTiler Weather SDK 6종 기상 타일 오버레이:
- 바람/기온/강수/기압/레이더/구름 라디오 토글
- 3시간 단위 step 스냅 타임라인 + 드래그 실시간 seek
- 색상 범례, 배속 제어, 투명도 조절
- ServiceWorker 타일 캐시 (cache-first, 최대 2000장)
- SDK 시간 단위(epoch 초) 정합성 보장

Open-Meteo 수역별 기상 패널:
- 4개 수역 centroid 기반 해양/기상 데이터 5분 폴링
- 파고/풍속/수온/너울 카드 UI + 경고 하이라이트

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 21:45:07 +09:00
69775c90a2 feat(map): 항적조회 + SVG 캐시 + fitBounds
- 대상선박 우클릭 컨텍스트 메뉴로 항적 조회 (6h~5d)
- Mercator: PathLayer(고정) + TripsLayer(애니메이션) + ScatterplotLayer(포인트)
- Globe: MapLibre 네이티브 line + arrow + circle 레이어
- rAF 직접 overlay 조작으로 React 재렌더링 방지
- SVG 아이콘 data URL 캐시로 네트워크 재요청 방지
- 항적 조회 시 자동 fitBounds (전체 항적 뷰포트 맞춤)
- API 프록시 /api/ais-target/:mmsi/track 엔드포인트 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 18:19:01 +09:00
91df90b528 perf(map): Globe/Mercator 양방향 동시 렌더링
- overlay 파괴/재생성 대신 layers 비움으로 전환
- globe ship 레이어 visibility 즉시 토글 (projectionBusy 우회)
- fleet circles fill vertex 초과 수정 (steps 72→36/24)
- globe scrollZoom easing 경고 수정
- projection 비영속화 (항상 mercator 시작)
- globe 레이어 준비 전까지 3D 토글 비활성화

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 13:08:54 +09:00
d88c89403d perf(map): globe 선박 렌더링 사전계산 최적화
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 12:26:42 +09:00
16ebf3abca feat: 사용자 설정 영속화 + 지도 뷰 저장
usePersistedState hook으로 대시보드 상태를
localStorage에 자동 저장. 지도 뷰(중심/줌/방위)도
60초 주기 + 언마운트 시 저장하여 새로고침 복원.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 12:18:39 +09:00
650888adb7 feat(map): 지도 설정 패널 + 수심 범례 구현
- 나침반/줌 컨트롤 분리, 기어 버튼으로 설정 패널 토글
- 설정 항목: 레이블 언어, 육지/물/수심 색상, 수심 폰트 크기/색상
- 런타임 map.setPaintProperty/setLayoutProperty로 즉시 적용
- 수심 색상 범례 (좌하단 그라데이션 바 + 눈금)
- 초기화 버튼으로 디폴트 복원

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 06:17:20 +09:00
7eff97afd4 fix(map): 해저케이블 시인성 개선
- MapLibre 중첩 interpolate 표현식 에러 수정
- 6레이어 구조: hitarea, casing, line, glow, points, label
- 호버 시 flat value 사용 (case 내 interpolate 제거)
- Globe/Mercator 양쪽 프로젝션 레이어 순서 지원
- 진한 색상, 굵은 라인, 포인트 마커로 시인성 향상

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 02:28:11 +09:00
ca5560aff2 feat(map): 해저케이블 레이어 및 정보 패널 구현
- subcable entity 생성 (타입 정의 + 데이터 로딩 hook)
- MapLibre 레이어: 케이블 라인 + 호버 하이라이트 + 라벨
- 지도 표시 설정에 해저케이블 토글 추가
- 클릭 시 우측 정보 패널 (길이, 개통, 운영사, landing points)
- Map3D + DashboardPage 통합

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 02:17:58 +09:00
864fc44d0e refactor(map): Map3D.tsx hooks 추출 완료 (4558줄 → 510줄) 2026-02-16 00:41:11 +09:00
324c6267f0 refactor(map): Map3D 모듈 분리 및 버그 수정 2026-02-15 23:57:38 +09:00
918b80e06a chore: 팀 프로젝트 워크플로우 세팅
- pnpm → npm 전환 (워크스페이스 유지)
- .claude/ 팀 규칙(5), 스킬(4), 설정, hooks 스크립트(3) 추가
- .githooks/ commit-msg, post-checkout, pre-commit 추가
- Nexus npm 프록시 설정 (.npmrc — URL만, 인증 제외)
- .editorconfig, .prettierrc, .node-version(24) 추가
- CLAUDE.md 프로젝트 설명서 생성
- Map3D.tsx 미사용 함수 제거 (getDeckShipAngle)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 22:18:40 +09:00
d01240a737 fix(map): align ship icon headings for COG convention 2026-02-15 21:52:04 +09:00
a8aa916076 fix(map): align prediction vectors with ship course + improve contrast 2026-02-15 19:41:15 +09:00
11aff67a04 feat(map): add prediction vectors and ship labels toggles 2026-02-15 19:15:20 +09:00
0899223c75 fix(map): keep bathymetry visible when overzooming 2026-02-15 18:55:57 +09:00
dc702728be tweak(map): increase bathymetry depth label size 2026-02-15 18:51:29 +09:00
15d5d5ad23 fix(globe): gate bathymetry fill by zoom to avoid ocean tearing 2026-02-15 18:47:52 +09:00
3497b8c7e2 feat(dashboard): alarms filter + legend/palette sync + map polish 2026-02-15 18:42:49 +09:00
30e6e584ee refactor(map3d): isolate ship hover overlay for icon flicker reduction 2026-02-15 16:35:05 +09:00
54d33a8670 fix(map3d): restore mercator static/overlay split and stabilize globe deck rendering 2026-02-15 16:28:04 +09:00
6ff5ae383f fix: restore globe ship icon color while keeping symbol layer stable 2026-02-15 16:14:03 +09:00
86d36d25e3 fix: reduce globe symbol paint variability to avoid bucket mismatch 2026-02-15 16:12:36 +09:00
5b7d1c4331 fix: stabilize globe projection loading and globe ship icon fallback 2026-02-15 16:12:10 +09:00
05b0c6b881 feat(map3d): stabilize globe overlays and hover-highlight sync 2026-02-15 16:09:21 +09:00
b944887430 Adjust globe layer stacking and keep overlay layers alive 2026-02-15 15:49:01 +09:00
70dc651230 Keep globe overlays stable and reuse globe layer IDs 2026-02-15 15:48:49 +09:00
e504dbebca Fix globe zones line-width expression and enforce map layer ordering 2026-02-15 15:43:36 +09:00
bb5fd793d8 fix: resolve globe ship circle-radius expression and ensure ship layers top 2026-02-15 15:36:29 +09:00
ccf3f2361f fix: guard deck layer arrays against null ids 2026-02-15 15:30:09 +09:00
b883c4113b fix: guard map style and ship layer ids during rendering 2026-02-15 15:27:57 +09:00
03d728589f Sync globe layer rebuild during projection transition 2026-02-15 15:22:23 +09:00
ed5b0da5f9 fix: prevent hover update loop and map style ready guard 2026-02-15 15:17:48 +09:00
ea51aee6b4 Fix globe tooltip typing and overlay defaults 2026-02-15 14:52:57 +09:00
9a9f7302cb fix(map3d): simplify projection loading release condition 2026-02-15 14:45:31 +09:00
f745bb16d7 feat(map3d): add projection mode transition loading overlay 2026-02-15 14:42:07 +09:00
2514591703 fix(map3d): align globe ship icon rendering and heading 2026-02-15 14:38:25 +09:00
1225d5c54c fix(map3d): sync mercator restore on globe toggle 2026-02-15 14:33:50 +09:00
6f7a82af4c fix(map): stop hiding raster base and reset decks on projection switch 2026-02-15 14:29:19 +09:00
0ffadb2e66 fix(map): harden globe projection switch and overlay teardown 2026-02-15 14:27:08 +09:00
15378ed7ff fix(map): scale flat icons and prioritize relation layers 2026-02-15 14:24:00 +09:00
c31d26124c fix(ais,map): 2-stage bootstrap and globe overlay refresh 2026-02-15 14:17:27 +09:00
b8ccef23ca fix(globe): stabilize ship symbols and deck rendering 2026-02-15 14:04:37 +09:00
bcd4a77f47 fix(api): add center/radius AIS query and stabilize globe ship icon render 2026-02-15 13:58:07 +09:00
7f72ab651d fix(globe): force repaints; maplibre overlays; disable bathy raster 2026-02-15 13:46:01 +09:00
dc0729fc5f fix(map): reduce bathymetry fill complexity at low zoom 2026-02-15 13:15:41 +09:00
84d602d25b fix(globe): avoid bathymetry overflow; fix ship halo expr 2026-02-15 13:14:03 +09:00