a9d0b830c6
Merge pull request 'develop' ( #37 ) from develop into main
...
Build and Deploy Wing / build-and-deploy (push) Successful in 30s
Reviewed-on: #37
2026-02-20 04:07:26 +09:00
de0d74ce3f
Merge pull request 'chore: 기타AIS 토글 기본값 on으로 변경' ( #36 ) from feature/ship-image-thumbnails into develop
...
Reviewed-on: #36
2026-02-20 04:07:01 +09:00
93db39e0d5
chore: 기타AIS 토글 기본값 on으로 변경
2026-02-20 04:05:01 +09:00
f9114cf1ff
Merge pull request 'develop' ( #35 ) from develop into main
...
Build and Deploy Wing / build-and-deploy (push) Successful in 30s
Reviewed-on: #35
2026-02-20 04:02:44 +09:00
03337fc99c
Merge pull request 'feat(ship-image): 선박 이미지 썸네일 및 갤러리 기능' ( #34 ) from feature/ship-image-thumbnails into develop
...
Reviewed-on: #34
2026-02-20 04:02:25 +09:00
d66d0f0c89
fix(map): Globe 사진 인디케이터 오프셋 제거
...
- circle-translate 제거하여 선박 아이콘과 동일 중심 위치에 표시
2026-02-20 04:00:45 +09:00
d5a8be3b96
fix(map): Globe 사진 인디케이터 네이티브 레이어 전환
...
- Globe Deck.gl ScatterplotLayer 아티팩트(파란 막대) 수정
- MapLibre 네이티브 circle 레이어로 사진 인디케이터 구현
2026-02-20 03:57:45 +09:00
e72e2f14f6
feat(ship-image): 선박 이미지 썸네일 및 갤러리 기능
...
- AIS 타겟에 shipImagePath/shipImageCount 필드 추가
- 선박 이미지 API 연동 (fetchShipImagesByImo)
- 지도 위 사진 인디케이터 (ScatterplotLayer)
- 호버 툴팁에 썸네일 표시
- 정보 패널 카드 갤러리 (스크롤+화살표)
- 고화질 이미지 모달 (initialIndex 지원)
- Vite 프록시 /shipimg 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 03:45:25 +09:00
16cbb770ec
Merge pull request 'feat(api): signal-batch v2 API 마이그레이션' ( #33 ) from develop into main
...
Build and Deploy Wing / build-and-deploy (push) Successful in 35s
Reviewed-on: #33
2026-02-20 00:34:41 +09:00
71f235097c
feat(api): signal-batch v2 API 마이그레이션 ( #32 )
2026-02-20 00:33:08 +09:00
1e742e5a3d
Merge pull request 'fix(hook): commit-msg 정규식 통일 (template-common v1.2.0)' ( #31 ) from fix/sync-commit-msg into develop
2026-02-18 21:17:32 +09:00
9437f5be3d
fix(hook): commit-msg 정규식 통일 (template-common v1.2.0)
2026-02-18 21:16:43 +09:00
44a04f8cf7
Merge pull request 'develop' ( #30 ) from develop into main
...
Build and Deploy Wing / build-and-deploy (push) Successful in 29s
Reviewed-on: #30
2026-02-17 16:50:18 +09:00
7cdc8bef2f
Merge pull request 'fix(map): Globe 렌더링 안정화 및 툴팁 유지 개선' ( #29 ) from feature/globe-rendering-optimization into develop
...
Reviewed-on: #29
2026-02-17 16:49:48 +09:00
59a5e6beac
fix(map): 패널 선택 fly-to 즉시 반응 개선
...
- 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>
2026-02-17 16:47:38 +09:00
f9da13b694
fix(map): 패널 선택 시 fly-to 복원, 지도 클릭은 제외
...
- mapInitiatedSelectRef 도입: 지도 클릭 선택과 패널 선택을 구분
- 좌측 패널(선박 목록, 알람 목록) 선택 시 해당 위치로 fly-to
- 지도에서 직접 클릭/우클릭 선택 시에는 fly-to 비활성화
- onMapSelectMmsi 래퍼로 지도 내 선택 경로 통합 (Globe+Mercator)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 16:44:55 +09:00
7bca216c53
fix(map): Globe 렌더링 안정화 및 툴팁 유지 개선
...
- isStyleLoaded() 가드를 try/catch 패턴으로 교체 (AIS poll setData 중 렌더링 차단 방지)
- Globe 툴팁 buildTooltipRef 패턴 도입 (AIS poll 주기 변경 시 사라짐 방지)
- Globe 우클릭 컨텍스트 메뉴 isStyleLoaded 가드 제거
- 항적 가상 선박을 IconLayer에서 ScatterplotLayer(원형)로 변경
- useNativeMapLayers isStyleLoaded 가드 제거 (항적 레이어 셋업 스킵 방지)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 16:38:51 +09:00
c9f55c82a3
Merge pull request 'develop' ( #28 ) from develop into main
...
Build and Deploy Wing / build-and-deploy (push) Successful in 28s
Reviewed-on: #28
2026-02-17 11:02:28 +09:00
ccaf20804d
Merge pull request 'feat(map): 오버레이 가시성 개선 + 경고 선박 강조' ( #27 ) from feature/overlay-alarm-visibility into develop
...
Reviewed-on: #27
2026-02-17 11:01:56 +09:00
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
1df0425323
Merge pull request 'fix(sidebar): 검색 복원, 경고 필터, 내부 스크롤 수정' ( #26 ) from develop into main
...
Build and Deploy Wing / build-and-deploy (push) Successful in 31s
Reviewed-on: #26
2026-02-17 08:18:37 +09:00
383b41f49a
fix(sidebar): 검색 복원, 경고 필터, 내부 스크롤 수정 ( #25 )
2026-02-17 08:12:14 +09:00
9bbc52cc78
Merge pull request 'develop' ( #23 ) from develop into main
...
Build and Deploy Wing / build-and-deploy (push) Successful in 29s
Reviewed-on: #23
2026-02-17 07:15:24 +09:00
9048dfdfc6
Merge pull request 'feat: 모바일 반응형 UI (drawer, 아코디언, 범례)' ( #22 ) from feature/mobile-responsive-ui into develop
...
Reviewed-on: #22
2026-02-17 07:14:45 +09:00
d9b8e9ca44
fix(topbar): 통계 토글 탭을 하단 우측으로 이동
...
- 통계 펼치기 버튼을 topbar 내부에서 하단 우측 탭으로 이동
- 통계 바를 absolute→flow 레이아웃으로 변경 (지도 줌 겹침 방지)
- 모바일 grid-rows를 auto로 변경하여 통계 바 높이 수용
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 07:11:42 +09:00
541135977c
refactor(topbar): POLL 제거 + 모바일 통계 바
...
- POLL/DATA/API/READY 상태 표시 제거
- 데스크톱: 통계 칩 항상 인라인 표시
- 모바일: 통계 펼치기 버튼 + 하단 확장 바
- 시스템명/시계/테마/로그아웃 항상 표시
- pollingStatus/lastFetchMinutes props 제거
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 07:06:05 +09:00
61fc3bbce4
feat: 모바일 반응형 UI (drawer, 아코디언, 범례)
...
- Topbar: 햄버거 메뉴 버튼, 반응형 stats 숨김
- Sidebar: 모바일 drawer (fixed + translate-x), backdrop
- Sidebar: Section 아코디언으로 전환 (details/summary)
- Legend: 접기/펼치기 토글 추가
- panels.css: .sb/.sb-t 클래스 제거
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 06:54:27 +09:00
255c082436
Merge pull request 'feat: Tailwind CSS v4 + @wing/ui 디자인 시스템' ( #21 ) from feature/tailwind-design-system into develop
...
Reviewed-on: #21
2026-02-17 06:46:49 +09:00
40229a75c0
fix: 폰트 크기 복원 + 라이트 모드 대비 + CSS 변수 전환
...
- @theme에서 --text-xs/sm 오버라이드 제거 (Tailwind 기본값 복원)
- 라이트 모드: bg #e2e8f0, border #94a3b8로 영역 대비 강화
- 새 토큰: --wing-glass-dense, --wing-overlay, --wing-card-alpha, --wing-subtle
- 8개 CSS 파일의 하드코딩된 rgba 값을 CSS 변수로 전환
- MapLibre 컨트롤 아이콘 라이트 모드 대응
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 06:41:27 +09:00
a132c7eaf8
feat: useTheme 훅 + 테마 토글 버튼 구현
...
- useTheme: localStorage 기반 다크/라이트 테마 전환
- data-theme 속성으로 CSS 변수 자동 전환
- Topbar에 Light/Dark 토글 버튼 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 06:22:49 +09:00
2adcbc9a93
refactor: toggles CSS를 Tailwind + @wing/ui로 전환
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 06:18:57 +09:00
e9a41c6663
refactor: base/layout/topbar CSS를 Tailwind로 전환
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 06:15:32 +09:00
6167a0ebd8
feat(ui): @wing/ui 기본 컴포넌트 8개 구현
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 06:12:02 +09:00
a4859f54bc
chore: Tailwind CSS v4 + @wing/ui 패키지 인프라 구축
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 06:10:04 +09:00
2744374f14
Merge pull request 'develop' ( #20 ) from develop into main
...
Build and Deploy Wing / build-and-deploy (push) Successful in 28s
Reviewed-on: #20
2026-02-17 06:06:30 +09:00
c8c1b556d6
Merge pull request 'refactor: 데드코드 정리 + 대형 파일 분리 + FSD 위반 해소' ( #19 ) from feature/refactor-cleanup into develop
...
Reviewed-on: #19
2026-02-17 06:05:41 +09:00
ec9d894ac8
refactor: FSD 위반 해소 — 공유 상수/함수를 shared/로 이동
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 00:04:40 +09:00
3fa0b67e97
refactor(styles): CSS 1,814줄 → 15개 컴포넌트 파일 분리
...
styles.css 모놀리스를 @import 기반 모듈 구조로 분리:
- base.css: CSS 변수, 리셋, 폰트
- layout.css: 그리드 레이아웃, 반응형
- components/: topbar, panels, toggles, speed, vessel-list,
ais-list, alarms, relations, map-panels, map-settings,
auth, weather, weather-overlay
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 00:01:04 +09:00
ec03a88fbd
refactor(dashboard): 사이드바 + 상태 훅 추출 분리
...
DashboardPage.tsx (808줄) → 3파일 분리:
- useDashboardState.ts (147줄): UI 상태 관리 훅
- DashboardSidebar.tsx (430줄): 좌측 사이드바 컴포넌트
- DashboardPage.tsx (295줄): 레이아웃 + 지도 영역
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 23:55:58 +09:00
4d67b26ffa
refactor(map3d): useGlobeOverlays 600줄 → 서브훅 2+1개 분리
...
- useGlobePairOverlay: pair lines + pair range + paint
- useGlobeFcFleetOverlay: fc lines + fleet circles + paint
- useGlobeOverlays: 오케스트레이터 (기존 호출부 호환)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 23:44:19 +09:00
b1551f800b
refactor(map3d): useDeckLayers 레이어 생성 팩토리 추출
...
- buildMercatorDeckLayers: Mercator 모드 Deck.gl 레이어 팩토리
- buildGlobeDeckLayers: Globe 모드 Deck.gl 레이어 팩토리
- useDeckLayers: 오케스트레이션 + 툴팁/클릭 + setProps
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 23:41:29 +09:00
e2dc927ad2
refactor(map3d): useGlobeShips 977줄 → 서브훅 3+1개 분리
...
- useGlobeShipLabels: Mercator 선명 라벨
- useGlobeShipLayers: Globe 선박 아이콘 레이어 + GeoJSON
- useGlobeShipHover: Globe 호버 오버레이 + 클릭 선택
- useGlobeShips: 오케스트레이터 (기존 호출부 호환)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 23:35:03 +09:00
c2ca830ef0
chore: 미사용 데드코드 삭제
...
- entities/vessel/lib/filter.ts (미사용 필터 유틸)
- entities/vessel/model/mockFleet.ts (미사용 mock 데이터)
- shared/lib/color/hexToRgb.ts (MapSettingsPanel 로컬 중복)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 23:20:47 +09:00
8eb162fd8b
Merge pull request 'release: develop → main 배포' ( #18 ) from develop into main
...
Build and Deploy Wing / build-and-deploy (push) Successful in 28s
Reviewed-on: #18
2026-02-16 22:47:39 +09:00
4d1a8a0d1e
Merge pull request 'feat(weather,track): 기상 오버레이 + vessel-track 병합' ( #17 ) from feature/weather-overlay into develop
...
Reviewed-on: #17
2026-02-16 22:47:26 +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
ea7dcc353f
Merge pull request 'feat(map): 항적조회 기능 (develop → main)' ( #15 ) from develop into main
...
Build and Deploy Wing / build-and-deploy (push) Successful in 23s
Reviewed-on: #15
2026-02-16 18:33:28 +09:00