2026-01-22 09:14:01 +09:00
|
|
|
{
|
|
|
|
|
"name": "dark",
|
|
|
|
|
"private": true,
|
2026-01-30 13:01:54 +09:00
|
|
|
"version": "0.1.0",
|
|
|
|
|
"type": "module",
|
2026-01-22 09:14:01 +09:00
|
|
|
"scripts": {
|
2026-01-30 13:01:54 +09:00
|
|
|
"dev": "vite --port 3000",
|
2026-02-15 10:28:27 +09:00
|
|
|
"build": "tsc -b && vite build",
|
|
|
|
|
"build:dev": "tsc -b && vite build --mode dev",
|
|
|
|
|
"build:qa": "tsc -b && vite build --mode qa",
|
|
|
|
|
"build:prod": "tsc -b && vite build",
|
2026-01-30 13:01:54 +09:00
|
|
|
"preview": "vite preview --port 3000",
|
2026-02-05 06:35:31 +09:00
|
|
|
"preview:dev": "vite preview --mode dev --port 3000",
|
|
|
|
|
"preview:qa": "vite preview --mode qa --port 3000",
|
2026-02-15 10:28:27 +09:00
|
|
|
"type-check": "tsc -b --noEmit",
|
2026-02-15 11:37:37 +09:00
|
|
|
"lint": "eslint src"
|
2026-01-22 09:14:01 +09:00
|
|
|
},
|
2026-01-30 13:01:54 +09:00
|
|
|
"dependencies": {
|
|
|
|
|
"@deck.gl/core": "^9.2.6",
|
2026-02-05 06:35:31 +09:00
|
|
|
"@deck.gl/extensions": "^9.2.6",
|
2026-02-06 09:07:51 +09:00
|
|
|
"@deck.gl/geo-layers": "^9.2.6",
|
2026-01-30 13:01:54 +09:00
|
|
|
"@deck.gl/layers": "^9.2.6",
|
refactor: OpenLayers → MapLibre GL JS 코어 전환 (Session C)
메인 지도 엔진을 OpenLayers에서 MapLibre GL JS 5.18.0으로 전환.
Deck.gl 통합을 수동 캔버스 오버레이에서 @deck.gl/mapbox MapboxOverlay로 단순화.
주요 변경:
- maplibregl.Map + MapboxOverlay(자동 뷰 동기화) 기반 재구성
- OL EPSG:3857 좌표 변환 → MapLibre LngLat(4326) 직접 사용
- 줌 규약: mapStore.zoom = OL 규약 유지 (MapLibre zoom + 1)
- OL 전용 코드에 MapLibre 가드 패턴 적용 (getCanvas 체크)
- 커서 관리: default → pointer(호버) → grabbing(드래그)
신규: projection.ts | 재작성: baseLayer, useShipLayer, MapContainer, useTrackingMode
패치: mapStore, shipLayer, TopBar, useShipSearch, useRealmLayer, useMeasure,
useZoneDraw, useZoneEdit, ReplayWebSocketService, TrackQueryViewer 외
미동작(후속 세션): 측정(F), 관심구역(E), 반경원(E), 구역편집(G), 미니맵(H)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 12:49:08 +09:00
|
|
|
"@deck.gl/mapbox": "^9.2.7",
|
2026-02-06 09:07:51 +09:00
|
|
|
"@deck.gl/mesh-layers": "^9.2.6",
|
2026-01-30 13:01:54 +09:00
|
|
|
"@stomp/stompjs": "^7.2.1",
|
refactor: OpenLayers → MapLibre GL JS 코어 전환 (Session C)
메인 지도 엔진을 OpenLayers에서 MapLibre GL JS 5.18.0으로 전환.
Deck.gl 통합을 수동 캔버스 오버레이에서 @deck.gl/mapbox MapboxOverlay로 단순화.
주요 변경:
- maplibregl.Map + MapboxOverlay(자동 뷰 동기화) 기반 재구성
- OL EPSG:3857 좌표 변환 → MapLibre LngLat(4326) 직접 사용
- 줌 규약: mapStore.zoom = OL 규약 유지 (MapLibre zoom + 1)
- OL 전용 코드에 MapLibre 가드 패턴 적용 (getCanvas 체크)
- 커서 관리: default → pointer(호버) → grabbing(드래그)
신규: projection.ts | 재작성: baseLayer, useShipLayer, MapContainer, useTrackingMode
패치: mapStore, shipLayer, TopBar, useShipSearch, useRealmLayer, useMeasure,
useZoneDraw, useZoneEdit, ReplayWebSocketService, TrackQueryViewer 외
미동작(후속 세션): 측정(F), 관심구역(E), 반경원(E), 구역편집(G), 미니맵(H)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 12:49:08 +09:00
|
|
|
"@turf/turf": "^7.3.4",
|
2026-01-30 13:01:54 +09:00
|
|
|
"axios": "^1.4.0",
|
|
|
|
|
"dayjs": "^1.11.11",
|
feat: STS 분석 기능 구현 및 항적분석 고도화
- STS(Ship-to-Ship) 접촉 분석 기능 전체 구현
- API 연동 (vessel-contacts), 스토어, 레이어 훅, 레이어 레지스트리
- 접촉 쌍 그룹핑, 그룹 카드 목록, 상세 모달 (그리드 레이아웃)
- ScatterplotLayer 접촉 포인트 + 위험도 색상
- 항적분석 탭 UI 분리 (구역분석 / STS분석)
- AreaSearchPage → AreaSearchTab, StsAnalysisTab 추출
- 탭 전환 시 결과 초기화 확인, 구역 클리어
- 지도 호버 하이라이트 구현 (구역분석 + STS)
- MapContainer pointermove에 STS 레이어 ID 핸들러 추가
- STS 쌍 항적 동시 하이라이트 (vesselId → groupIndex 매핑)
- 목록↔지도 호버 연동 자동 스크롤
- pickingRadius 12→20 확대
- 재생 컨트롤러(AreaSearchTimeline) STS 지원
- 항적/궤적 토글 activeTab 기반 스토어 분기
- 닫기 시 양쪽 스토어 + 레이어 정리
- 패널 닫기 초기화 수정 (isOpen 감지, clearResults로 탭 보존)
- 조회 중 로딩 오버레이 (LoadingOverlay 공통 컴포넌트)
- 항적분석 다중 방문 대응, 선박 상세 모달, 구역 편집 기능
- trackLayer updateTriggers Set 직렬화, highlightedVesselIds 지원
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 06:20:46 +09:00
|
|
|
"html2canvas": "^1.4.1",
|
refactor: OpenLayers → MapLibre GL JS 코어 전환 (Session C)
메인 지도 엔진을 OpenLayers에서 MapLibre GL JS 5.18.0으로 전환.
Deck.gl 통합을 수동 캔버스 오버레이에서 @deck.gl/mapbox MapboxOverlay로 단순화.
주요 변경:
- maplibregl.Map + MapboxOverlay(자동 뷰 동기화) 기반 재구성
- OL EPSG:3857 좌표 변환 → MapLibre LngLat(4326) 직접 사용
- 줌 규약: mapStore.zoom = OL 규약 유지 (MapLibre zoom + 1)
- OL 전용 코드에 MapLibre 가드 패턴 적용 (getCanvas 체크)
- 커서 관리: default → pointer(호버) → grabbing(드래그)
신규: projection.ts | 재작성: baseLayer, useShipLayer, MapContainer, useTrackingMode
패치: mapStore, shipLayer, TopBar, useShipSearch, useRealmLayer, useMeasure,
useZoneDraw, useZoneEdit, ReplayWebSocketService, TrackQueryViewer 외
미동작(후속 세션): 측정(F), 관심구역(E), 반경원(E), 구역편집(G), 미니맵(H)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 12:49:08 +09:00
|
|
|
"maplibre-gl": "^5.18.0",
|
2026-02-15 11:37:37 +09:00
|
|
|
"react": "^19.2.4",
|
|
|
|
|
"react-dom": "^19.2.4",
|
2026-01-30 13:01:54 +09:00
|
|
|
"react-router-dom": "^6.30.3",
|
2026-02-15 11:37:37 +09:00
|
|
|
"zustand": "^5"
|
2026-01-22 09:14:01 +09:00
|
|
|
},
|
2026-01-30 13:01:54 +09:00
|
|
|
"devDependencies": {
|
2026-02-15 11:37:37 +09:00
|
|
|
"@eslint/js": "^9.39.2",
|
2026-02-15 10:28:27 +09:00
|
|
|
"@types/node": "^22.10.5",
|
2026-02-15 11:37:37 +09:00
|
|
|
"@types/react": "^19.2.14",
|
|
|
|
|
"@types/react-dom": "^19.2.3",
|
|
|
|
|
"@vitejs/plugin-react": "^5.1.4",
|
|
|
|
|
"eslint": "^9.39.2",
|
|
|
|
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
|
|
|
"eslint-plugin-react-refresh": "^0.4.20",
|
|
|
|
|
"globals": "^16.2.0",
|
|
|
|
|
"sass": "^1.97.3",
|
2026-02-15 10:28:27 +09:00
|
|
|
"typescript": "~5.7.2",
|
2026-02-15 11:37:37 +09:00
|
|
|
"typescript-eslint": "^8.55.0",
|
|
|
|
|
"vite": "^7.3.1"
|
2026-01-22 09:14:01 +09:00
|
|
|
}
|
|
|
|
|
}
|