6d4ac4d3fe
feat(frontend): 이란 리플레이 실데이터 전환 + 피격선박 이벤트 통합
...
- GeoEvent.type에 'sea_attack' 추가 + SEA ATK 배지 (#0ea5e9)
- damagedShips → GeoEvent 변환, mergedEvents에 합류
- 더미↔API 토글 UI (ReplayControls 배속 우측)
- useIranData: dataSource 분기 (dummy=sampleData, api=Backend DB)
- API 모드: events/aircraft/osint 시점 범위 조회 (3월1일~오늘)
- 중복 방지: API 모드에서 damageEvents 프론트 병합 건너뜀
- fetchAircraftByRange, fetchOsintByRange, fetchEventsByRange 서비스 함수
2026-03-24 07:52:22 +09:00
9e1b3730ff
feat(backend): 이란 리플레이 시점 조회 API + Events CRUD
...
- Aircraft/OSINT Controller: from/to Instant 파라미터 추가 (기존 캐시 조회와 공존)
- AircraftService.getByDateRange(): DB에서 icao24별 최신 위치 조회
- OsintService.getByDateRange(): 날짜 범위 OSINT 조회
- Event 패키지 신규: Entity, Dto, Repository, Service, Controller
- GET /api/events?from=&to= (인증 예외)
- POST /api/events/import (벌크 import)
- AuthFilter: /api/events 인증 예외 추가
2026-03-24 07:52:06 +09:00
Nan Kyung Lee
81bced4367
feat(iran): S&P Global Marine Risk Note 반영 — 이란 상선공격 27척 피격 데이터
...
- S&P Global Market Intelligence (2026-03-19) 보고서 기반
- 이란 상선 공격 총 30건 중 식별 가능한 27척 데이터 추가
- 선박별: IMO, 국적, 유형, 피격 일시, 위치, 피해 정도
- 유형별: 탱커 52%, 벌크선 21%, 컨테이너 17%, 예인선 7%
- 해역별: UAE 48%, 오만 28%, 쿠웨이트/카타르 등
- 기존 리플레이 이벤트 ID와 연동
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 06:34:51 +09:00
dc8a30a58b
feat: LayerPanel 공통 트리 구조 + SVG 아이콘 전수 전환
...
- LayerTreeNode 공통 인터페이스 + LayerTreeRenderer 재귀 컴포넌트
- 한국/이란 양쪽 트리 데이터 정의 + batchToggle 캐스케이드
- 위험시설/해외시설 emoji→SVG IconLayer 전환 (12 SVG 함수, 3 IconLayer)
- 부모 토글→하위 전체 ON/OFF, 카운트 합산 동기화
- 대시보드 탭 localStorage 영속화
2026-03-24 06:34:42 +09:00
13bdebb924
Merge pull request 'docs: 릴리즈 노트 정리 (2026-03-23.6)' ( #165 ) from release/2026-03-23.6 into develop
2026-03-23 15:30:16 +09:00
4a366b320a
docs: 릴리즈 노트 정리 (2026-03-23.6)
2026-03-23 15:30:02 +09:00
faf43fc7db
Merge pull request 'fix: LIVE 모드 렌더링 최적화 + 특정어업수역 폴리곤 수정' ( #164 ) from fix/korea-rendering-perf into develop
2026-03-23 15:28:31 +09:00
786092edc1
docs: 릴리즈 노트 업데이트
2026-03-23 15:27:51 +09:00
e2b531d9c5
fix: LIVE 모드 렌더링 최적화 + 특정어업수역 폴리곤 수정
...
- useMonitor 1초 setInterval 제거 (LIVE 60배 과잉 재계산 해소)
- useKoreaFilters currentTime 의존성 제거 (5분 polling 시에만 재계산)
- useKoreaData aircraft/satellite LIVE/REPLAY 분리
- 특정어업수역 실제 폴리곤 좌표 적용 (bbox→원본 GeoJSON 변환)
- FishingZoneLayer zone 속성 매칭 수정
- 선박/분석 라벨 폰트 크기 80% 축소
2026-03-23 15:26:41 +09:00
66f792724b
docs: 릴리즈 노트 정리 (2026-03-23.5) ( #162 )
2026-03-23 14:52:11 +09:00
498c198336
feat: 이란 시설 deck.gl SVG 전환 + 아이콘 품질 통합 + AI 챗 ( #161 )
2026-03-23 14:51:14 +09:00
f55cbe8426
docs: 릴리즈 노트 정리 (2026-03-23.4) ( #159 )
2026-03-23 13:19:26 +09:00
2511a33444
perf: 렌더링 성능 최적화 + 환적 Python 이관 + 중국어선감시 통합 ( #158 )
2026-03-23 13:16:24 +09:00
f4ee67a71a
docs: 릴리즈 노트 정리 (2026-03-23.3) ( #156 )
2026-03-23 11:15:30 +09:00
2c566041ca
refactor: 프론트엔드 구조 리팩토링 Phase 1~6 ( #155 )
2026-03-23 11:14:49 +09:00
8ca89487e9
docs: 릴리즈 노트 정리 (2026-03-23.2) ( #153 )
2026-03-23 09:32:14 +09:00
cdc4cb57b1
feat: 중국어선감시 탭 강화 + localStorage 상태 영속화 ( #152 )
2026-03-23 09:31:38 +09:00
852817d7ff
docs: 릴리즈 노트 정리 (2026-03-23) ( #150 )
2026-03-23 08:24:51 +09:00
5bf3ef8f79
fix: UX 개선 — 줌 스케일 연동 + 호버 커서 ( #149 )
2026-03-23 08:22:26 +09:00
e26a4db6e0
feat: 시설 Popup 디자인 통합 + LAYERS 카운트 통일 + 해외시설 토글 수정 ( #148 )
2026-03-23 08:21:59 +09:00
2f0ff22d1b
feat: 한국 레이어 핵심 기능 통합 — 해외시설·현장분석·선단강조·버그수정 ( #145 )
2026-03-23 08:19:54 +09:00
9877b8d7a7
Merge pull request 'docs: 릴리즈 노트 정리 (2026-03-20.3)' ( #143 ) from docs/release-notes-2026-03-20-3 into develop
2026-03-20 21:20:26 +09:00
109a2068ab
docs: 릴리즈 노트 정리 (2026-03-20.3)
2026-03-20 21:20:02 +09:00
0b24c75a1f
Merge pull request 'refactor: deck.gl 전면 전환 — DOM Marker → GPU 렌더링' ( #142 ) from refactor/deck-gl-migration into develop
2026-03-20 21:15:11 +09:00
8bda286975
docs: 릴리즈 노트 업데이트
2026-03-20 21:14:16 +09:00
f0c991c9ec
refactor: deck.gl 전면 전환 — DOM Marker → GPU 렌더링
...
- deck.gl 9.2 설치 + DeckGLOverlay(MapboxOverlay interleaved) 통합
- 정적 마커 11종 → useStaticDeckLayers (IconLayer/TextLayer, SVG DataURI)
- 분석 오버레이 → useAnalysisDeckLayers (ScatterplotLayer/TextLayer)
- 불법어선/어구/수역 라벨 → deck.gl ScatterplotLayer/TextLayer
- 줌 레벨별 스케일 (0~6: 0.6x, 7~9: 1.0x, 10~12: 1.4x, 13+: 1.8x)
- NK 미사일 궤적 PathLayer 추가 + 정적 마커 클릭 Popup
- 해저케이블 날짜변경선(180도) 좌표 보정
- 기존 DOM Marker 제거로 렌더링 성능 대폭 개선
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 21:11:56 +09:00
8323a248a7
Merge pull request 'feat: 어구그룹 선택 하이라이트 + 모선 마커' ( #140 ) from fix/gear-group-highlight into develop
2026-03-20 19:08:04 +09:00
8c008c69ec
feat: 선택 어구그룹 하이라이트 폴리곤 + 모선 강조 마커
...
- 선택된 어구그룹: 진한 주황 fill(0.25) + 굵은 경계선(3px)
- 모선 존재 시: 28px 주황 원 + glow + 'M' 라벨 + 선박명
- zoom 시 자동 선택 + 펼침
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:07:46 +09:00
83f1e8f387
Merge pull request 'fix: 어구 독립그룹 거리제한 10NM' ( #138 ) from feat/unregistered-gear-clusters into develop
2026-03-20 18:54:08 +09:00
a5dc5bbf35
fix: 비허가 어구 독립그룹에도 거리제한(10NM) 적용 — 동명 원거리 어구 분리
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:53:45 +09:00
23f60a4254
Merge pull request 'fix: 어구 그룹핑 거리+시간 조건' ( #136 ) from feat/unregistered-gear-clusters into develop
2026-03-20 18:50:30 +09:00
befcd12277
fix: 비허가 어구 그룹핑에 거리제한(10NM) + 수신시각(60분) 조건 추가
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:50:12 +09:00
5ba28f54f5
Merge pull request 'feat: 비허가 어구 클러스터 집계 + 폴리곤' ( #134 ) from feat/unregistered-gear-clusters into develop
2026-03-20 18:44:08 +09:00
730872d47e
feat: 비허가 어구 클러스터 집계 + 폴리곤 시각화
...
- AnalysisStatsPanel: 어구그룹/어구수 통계 (주황색)
- FleetClusterLayer: 비허가 어구 ConvexHull 폴리곤 (주황 점선) + 목록 패널
- 허가 선단(HSL 색상) vs 비허가 어구(주황) 별도 시각화
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:43:48 +09:00
345a5d5250
Merge pull request 'feat: 선단 클러스터 UI — 폴리곤 + 목록 + hover/zoom' ( #132 ) from feat/fleet-cluster-ui into develop
2026-03-20 18:19:46 +09:00
83bcbf48ab
feat: 선단 클러스터 UI — 폴리곤 경계 + 목록 패널 + hover/zoom 인터랙션
...
- FleetClusterLayer: ConvexHull 폴리곤 + 패딩 + 회사별 색상
- 선단 목록 패널: hover→하이라이트, zoom→fitBounds, 선박/어구 목록
- FleetCompanyController: GET /api/fleet-companies (회사명 조회)
- AuthFilter: /api/fleet-* 인증 예외
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:19:27 +09:00
5e359ec296
Merge pull request 'feat: 선단 등록 DB + 어망/어구 정체성 추적' ( #130 ) from fix/risk-scoring-and-cluster into develop
2026-03-20 18:07:38 +09:00
bb99387168
feat: 선단 등록 DB + 어망/어구 정체성 추적 시스템
...
- DB 007: fleet_companies, fleet_vessels, gear_identity_log, fleet_tracking_snapshot
- 906척 선단 구성 데이터 적재 (497개 회사, 279쌍 PT)
- FleetTracker: 등록 선단 ↔ AIS 매칭(NAME_EXACT) + 어구 정체성 추적
- track_similarity.py: DTW 기반 궤적 유사도 (TRACK_SIMILAR 플래그)
- scheduler: fleet_tracker 통합 (기존 assign_fleet_roles 대체)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:07:15 +09:00
fae116f7bd
Merge pull request 'feat: 선단 행동 패턴 매칭 + 수역 위험도 가산' ( #128 ) from fix/risk-scoring-and-cluster into develop
2026-03-20 17:46:55 +09:00
c09429b003
feat: 선단 탐지를 행동 패턴 매칭으로 전환 + 수역 위험도 가산
...
- fleet.py: DBSCAN/그리드 → PT 저인망(2척 3NM 유사속도방향) / PS 선망(3+척 2NM) / FC 환적(0.5NM 저속) 패턴 매칭
- risk.py: 특정어업수역 + 미허가 = +25점
- scheduler.py: cluster_id를 fleet 패턴 결과로 교체
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 17:46:10 +09:00
be728bc2d5
Merge pull request 'fix: 위험도 수역 가산 + 클러스터 그리드 셀' ( #126 ) from fix/risk-scoring-and-cluster into develop
2026-03-20 17:39:07 +09:00
d13baf302f
fix: 위험도 점수 수역 가산 + 클러스터 그리드 셀 방식 전환
...
- risk.py: 특정어업수역(ZONE_I~IV) 내 미허가 어선 +25점 가산
- fleet.py: DBSCAN → 고정 그리드 셀(5NM) 클러스터링 (체인 효과 차단)
- max_cluster_size=20으로 거대 클러스터 방지
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 17:38:49 +09:00
16805a1cf0
Merge pull request 'fix: 선단을 Python cluster로 전환 — BFS 제거 + 보라선 제거' ( #124 ) from fix/fleet-grouping-from-python into develop
2026-03-20 17:28:10 +09:00
72f0dc4eba
fix: 선단 그룹핑을 Python cluster 결과로 전환 — 프론트 BFS 제거
...
- ShipLayer: buildFleetGroups() 제거 → Python analysisMap cluster_id 기반
- 선박 클릭 시 같은 cluster_id 멤버만 연결선 표시
- AnalysisOverlay: 보라색 100NM+ 클러스터 연결선 제거
- 프론트엔드 전체 순회 제거로 성능 복원
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 17:27:51 +09:00
04d128b714
Merge pull request 'feat: 선단 사전 그룹핑 + 동일 그룹 보장' ( #122 ) from fix/score-display-and-fixes into develop
2026-03-20 17:12:59 +09:00
418225c6a7
feat: 선단 그룹핑 재설계 — 사전 클러스터링 + 동일 그룹 보장
...
- buildFleetGroups(): BFS 3NM 클러스터링으로 전체 중국어선 사전 그룹핑
- mmsi → groupId 맵으로 어느 멤버를 눌러도 같은 그룹 표시
- 그룹별 유형 자동 판별 (trawl_pair/purse_seine/transship/cluster)
- ShipLayer: detectFleet → buildFleetGroups 기반으로 전환
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 17:12:42 +09:00
abefcc2e4c
Merge pull request 'fix: 점수 8000→80 + 마커 중앙정렬 + 클러스터 eps 3NM' ( #120 ) from fix/score-display-and-fixes into develop
2026-03-20 16:19:50 +09:00
a009534c35
fix: 점수 표시 8000→80 + 강조마커 위치 중앙정렬 + 클러스터 eps 3NM
...
- AnalysisStatsPanel: score*100 제거 (이미 0~100 정수)
- KoreaMap: 불법어선 펄스 링 position:relative+absolute로 선박 아이콘 중앙 오버레이
- fleet.py: DBSCAN spatial_eps_nm 10→3 (116척 단일 클러스터 해소)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 16:19:31 +09:00
4c9eebab50
Merge pull request 'feat: AI 분석 패널 — 항적 API + 범례 + 스크롤 + 중복 제거' ( #118 ) from feat/analysis-panel-interactive into develop
2026-03-20 15:42:35 +09:00
48c15f9c33
feat: AI 분석 패널 개선 — 항적 API + 범례 + 스크롤 + 중복 제거
...
- Backend: mmsi별 최신 1건만 반환 (중복 제거)
- 항적: signal-batch tracks API 호출 (6시간, 5분 캐시)
- 범례: 위험도 점수 기준 상세 (위치/조업/AIS/허가, 0~100)
- 선박 목록: maxHeight 300px 스크롤 가능
- 선박 클릭 → flyTo + 항적 표시 + 근거 상세
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 15:42:13 +09:00