5fd1e2b3cf
fix: cn-fishing/localStorage 변경 통합 — develop 머지 후 누락 복원
...
- KoreaDashboard: useLocalStorage 적용 (koreaLayers, nationalities)
- KoreaDashboard: useKoreaFilters에 cnFishingOn 파라미터 전달
- KoreaDashboard: useCallback 의존성 React Compiler 호환
- FleetClusterLayer: geometry import 복원 + 로컬 함수 제거
2026-03-23 11:05:05 +09:00
4ee977101b
Merge remote-tracking branch 'origin/develop' into refactor/phase1-app-decompose
...
# Conflicts:
# docs/RELEASE-NOTES.md
# frontend/src/App.tsx
# frontend/src/components/korea/FleetClusterLayer.tsx
2026-03-23 11:02:58 +09:00
03f659986f
refactor: Phase 5+6 — 줌 디바운싱 + API 클라이언트 + 폴링 유틸
...
Phase 5 (렌더링 최적화):
- KoreaMap: onZoom ref 기반 비교로 불필요한 setState 방지
Phase 6 (서비스 정리):
- apiClient.ts: kcgFetch/externalFetch 래퍼 (credentials, error handling)
- usePoll.ts: 공통 폴링 훅 (interval + enabled + graceful error)
2026-03-23 10:58:00 +09:00
2b009ca81a
refactor: Phase 4-2 — shipClassification 유틸 추출 (ShipLayer 862줄→769줄)
...
- utils/shipClassification.ts: MT 색상/타입매핑/국기/사이즈 추출 (87줄)
- ShipLayer: 로컬 상수/함수 93줄 → import 1줄로 교체
2026-03-23 10:56:47 +09:00
c6c3b5ffb9
refactor: Phase 4-1 — geometry 유틸 추출 (FleetClusterLayer 979줄→927줄)
...
- utils/geometry.ts: convexHull, padPolygon, clusterColor 추출 (48줄)
- FleetClusterLayer: 로컬 함수 → import로 교체
2026-03-23 10:47:48 +09:00
728936439b
refactor: Phase 3 — StaticFacilityPopup 추출 (KoreaMap 935줄→742줄)
...
- StaticFacilityPopup: 시설 클릭 Popup 로직 독립 컴포넌트 (207줄)
- KoreaMap: IIFE Popup 블록(~200줄) → 컴포넌트 호출 3줄로 대체
- SUB_META/KIND_DEFAULT 상수 + 배지/필드 렌더링 모두 이동
2026-03-23 10:46:24 +09:00
aff17588b2
fix: KoreaDashboard named export 추가 (default→named)
2026-03-23 10:43:06 +09:00
8acf8824fb
refactor: Phase 2 완료 — useStaticDeckLayers 분할 (1,086줄→85줄)
...
- useStaticDeckLayers를 조합 훅으로 전환 (서브훅 호출만)
- createPortLayers: 항구 + 풍력단지 (145줄)
- createNavigationLayers: 해경 + 공항 + 항행경보 + 해적 (332줄)
- createMilitaryLayers: 군사시설 + 정부기관 + NK 발사/미사일 (272줄)
- createFacilityLayers: 인프라 + 위험시설 + CN/JP 시설 (310줄)
- layers/types.ts: 공유 타입 + hexToRgb (49줄)
- 각 서브훅은 SVG/색상 상수를 자체 포함 (독립 모듈)
2026-03-23 10:14:54 +09:00
19e5ff23aa
refactor: Phase 1 완료 — App.tsx 분해 (771줄→163줄)
...
- App.tsx: 탭 전환 + 공통 헤더(MON/LANG/THEME) + SharedFilterProvider만 유지
- IranDashboard: 이란 전용 상태/JSX + 헤더 Portal (모드토글/맵모드/카운트)
- KoreaDashboard: 한국 전용 상태/JSX + 헤더 Portal (필터버튼/카운트)
- SharedFilterContext: hiddenAcCategories/hiddenShipCategories 공유 상태
- useSharedFilters: Context 소비 훅 (react-refresh 호환)
- showFieldAnalysis를 KoreaDashboard 내부로 이동
- 헤더 슬롯(dashboard-header-slot/dashboard-counts-slot)으로 탭별 UI Portal
2026-03-23 10:06:58 +09:00
d6de826d1d
refactor: Phase 1 기반 컴포넌트 생성 — IranDashboard, KoreaDashboard, SharedFilterContext
...
- SharedFilterContext + SharedFilterProvider: 카테고리 필터 공유 상태
- useSharedFilters: Context 소비 훅 (react-refresh 호환 분리)
- IranDashboard: 이란 전용 상태/JSX 추출 (274줄)
- KoreaDashboard: 한국 전용 상태/JSX 추출 (323줄)
- App.tsx 통합은 후속 커밋 (헤더 상태 참조 리팩토링 필요)
2026-03-23 10:02:35 +09:00
83c0281710
docs: 릴리즈 노트 정리 (2026-03-23)
2026-03-23 08:24:31 +09:00