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
1ef39c5210
Merge pull request 'feat: AI 분석 패널 인터랙티브 — 선박 목록 + flyTo + 항적' ( #116 ) from feat/analysis-panel-interactive into develop
2026-03-20 15:22:24 +09:00
fe133b142e
feat: AI 분석 패널 인터랙티브 — 선박 목록 + flyTo + 근거 상세 + 항적 표시
...
- 위험도 버튼 클릭 → 해당 레벨 선박 목록 펼침 (최대 50척)
- 선박 행 클릭 → 지도 중심이동(flyTo) + 근거 상세 펼침
- 근거: 위치/활동/다크/GPS/선단 정보 표시
- 선택 선박 항적: trail 데이터를 GeoJSON LineString으로 렌더링
- KoreaMap flyTo 기능 구현 (mapRef.flyTo)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 15:22:06 +09:00
16150ceee1
Merge pull request 'fix: 분석 오버레이 라이브 위치 사용' ( #114 ) from fix/analysis-live-position into develop
2026-03-20 15:17:08 +09:00
1b2f8c65c6
fix: 분석 오버레이 라이브 선박 위치 사용 — allShips prop 전달
...
- KoreaMap에 allShips(전체 라이브 선박) prop 추가
- AnalysisOverlay: allShips 기반으로 분석 대상 매칭 (필터링 무관)
- 불법어선 마커: allShips에서 라이브 위치 참조 (위치 갭 해소)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 15:16:51 +09:00
7bd2ba3451
Merge pull request 'feat: 불법어선 수역 폴리곤 + AI 패널 수정 + 마커 강조' ( #112 ) from feat/fishing-zone-overlay-ui into develop
2026-03-20 14:17:03 +09:00
9507b0da26
fix: 불법어선 수역 내 한정 + AI 패널 항상 표시 + API 1시간 윈도우
...
- 불법어선 필터: classifyFishingZone으로 수역 내 비한국 어선만 판별
- 수역 내 어선에 빨간 강조 링+선박명 마커 표시
- AI 분석 패널: 데이터 유무 무관하게 항상 표시
- Backend: analyzed_at 기준 1시간 윈도우로 확대 (10분 → 1시간)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 14:16:42 +09:00
4cf1c50d05
Merge pull request 'feat: 수역 폴리곤 오버레이 + 마커 가시성 개선' ( #110 ) from feat/fishing-zone-overlay-ui into develop
2026-03-20 14:05:53 +09:00
af02ad12ff
feat: 불법어선 필터 시 수역 폴리곤 오버레이 + 선박 마커 가시성 개선
...
- WGS84 사전 변환 GeoJSON 생성 (런타임 변환 제거)
- FishingZoneLayer: 수역별 색상 fill/line + 이름 라벨
- AnalysisOverlay: 마커 크기 확대, 한글 라벨, 선박명 표시
- fishingAnalysis.ts: EPSG:3857 변환 로직 제거, WGS84 JSON 직접 사용
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 14:05:35 +09:00
95f320c9f3
Merge pull request 'fix: vessel-analysis API 500 + 불법어선 필터 수정' ( #108 ) from fix/vessel-analysis-api-mapping into develop
2026-03-20 13:58:22 +09:00
f2a05f742f
fix: vessel-analysis API 500 에러 + 불법어선 필터 기준 수정
...
- JPA bd09OffsetM → @Column(name="bd09_offset_m") 매핑 추가
- chnPrmShip.ts 복원 (허가어선 조회 서비스 누락)
- 불법어선: 영해/접속수역 침범 + risk HIGH+ 어선만 표시
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 13:58:04 +09:00
15d4a4513f
Merge pull request 'fix: 불법어선 필터 비어선 포함 버그 수정' ( #106 ) from fix/illegal-fishing-filter-scope into develop
2026-03-20 13:53:06 +09:00
4478b70cd8
fix: 불법어선 필터에 비어선 포함되는 버그 — risk 조건을 fishing 카테고리에만 적용
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 13:52:49 +09:00
597d921441
Merge pull request 'fix: numpy float DB INSERT 오류 수정' ( #104 ) from fix/numpy-float-db-insert into develop
2026-03-20 13:40:34 +09:00
746ddb7111
fix: numpy float → Python native 변환 — DB INSERT 시 np.float64 직렬화 오류 수정
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 13:40:16 +09:00
c634381c15
Merge pull request 'fix: CacheConfig VESSEL_ANALYSIS 상수 누락 수정' ( #102 ) from fix/cache-config-vessel-analysis into develop
2026-03-20 13:33:58 +09:00
67d817d0ba
fix: CacheConfig에 VESSEL_ANALYSIS 상수 누락 — 빌드 실패 수정
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 13:33:44 +09:00
a461767fc6
Merge pull request 'docs: 릴리즈 노트 정리 (2026-03-20.2)' ( #100 ) from docs/release-notes-2026-03-20-2 into develop
2026-03-20 13:30:57 +09:00
5e60c8dba4
docs: 릴리즈 노트 정리 (2026-03-20.2)
2026-03-20 13:30:40 +09:00
5154c67f1b
Merge pull request 'feat: Python 분석 결과 오버레이 + 메뉴 연동' ( #99 ) from feat/vessel-analysis-overlay into develop
2026-03-20 13:30:15 +09:00
de36958fa0
docs: 릴리즈 노트 업데이트
2026-03-20 13:29:35 +09:00
e82b2d77e7
feat: Python 분석 결과 오버레이 + 메뉴 연동 — Backend API 복원 + DB 테이블 + 통계패널 + 위험도 마커
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 13:28:50 +09:00
2a2b5fb111
Merge pull request 'docs: 릴리즈 노트 정리 (2026-03-20)' ( #97 ) from docs/release-notes-2026-03-20 into develop
2026-03-20 12:52:26 +09:00
5a93b4af25
docs: 릴리즈 노트 정리 (2026-03-20)
2026-03-20 12:52:07 +09:00
8b0bbf3d66
Merge pull request 'feat: 특정어업수역 폴리곤 기반 수역 분류 + 연결선 성능 수정' ( #96 ) from fix/fishing-overlay-perf into develop
2026-03-20 12:50:04 +09:00
e21d2a74e5
docs: 릴리즈 노트 업데이트
2026-03-20 12:49:00 +09:00
d4a35f546d
feat: 특정어업수역 Ⅰ~Ⅳ 폴리곤 기반 수역 분류 — 경도 하드코딩 → point-in-polygon 교체
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 12:47:29 +09:00
1351f366f1
Merge pull request 'fix: 중국어선감시 연결선 폭발 수정' ( #94 ) from fix/fishing-overlay-perf into develop
2026-03-20 12:30:47 +09:00
8c5ba0000c
fix: 중국어선감시 연결선 폭발 — 부분매칭 제거 + 거리제한 + 마커 상한
...
- gearLinks: 부분 매칭(startsWith) 제거 → 정확 이름 매칭만
- gearLinks: 거리 제한 0.15도(~10NM) 추가 — 원거리 연결선 차단
- gearLinks: 최대 200개 제한
- operating 마커: 최대 100척
- 역할 라벨: 일반 어선(FV) 제외, 본선/부속/운반만 최대 100개
- parentName 최소 3글자 이상만 매칭
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 12:30:25 +09:00
5d7dca128d
Merge pull request 'fix: prediction 배포 스크립트 수정' ( #92 ) from fix/prediction-deploy-timeout into develop
2026-03-20 12:21:14 +09:00
af088fdcc1
fix: prediction 배포 스크립트 수정 — health timeout 60초 + tar.gz 재시도 수정
2026-03-20 12:20:54 +09:00
2ef1e55927
Merge pull request 'ci: deploy 키 갱신 후 재배포 트리거' ( #90 ) from ci/redeploy-prediction into develop
2026-03-20 12:17:42 +09:00
8df1bb8f0f
ci: deploy 키 갱신 후 재배포 트리거
2026-03-20 12:17:23 +09:00
22f58c8473
Merge pull request 'feat: Python 어선 분류기 + 배포 설정 + 모니터링 프록시' ( #88 ) from feat/prediction-service into develop
2026-03-20 12:10:46 +09:00
a68dfb21b2
feat: Python 어선 분류기 + 배포 설정 + 백엔드 모니터링 프록시
...
- prediction/: FastAPI 7단계 분류 파이프라인 + 6개 탐지 알고리즘
- snpdb 궤적 조회 → 인메모리 캐시(13K척) → 분류 → kcgdb 저장
- APScheduler 5분 주기, Python 3.9 호환
- 버그 수정: @property last_bucket, SQL INTERVAL 바인딩, rollback, None 가드
- 보안: DB 비밀번호 하드코딩 제거 → env 환경변수 필수
- deploy/kcg-prediction.service: systemd 서비스 (redis-211, 포트 8001)
- deploy.yml: prediction CI/CD 배포 단계 추가 (192.168.1.18:32023)
- backend: PredictionProxyController (health/status/trigger 프록시)
- backend: AppProperties predictionBaseUrl + AuthFilter 인증 예외
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 12:10:21 +09:00
206c6f22a0
Merge pull request 'feat: 중국어선 조업분석, 어구/어망 분류, 이란 시설, 레이어 재구성' ( #84 ) from feature/korea-layers-enhancement into develop
2026-03-20 08:52:15 +09:00
b34efe37de
chore: develop 머지 충돌 해결 (RELEASE-NOTES.md)
2026-03-20 08:51:53 +09:00
Nan Kyung Lee
a467540dda
fix: 중국어선감시 활성화 시 지도 드래그 불가 — 마커 pointerEvents none 추가
2026-03-20 08:49:58 +09:00
Nan Kyung Lee
d40084da3b
feat: 한국 현황 상단에 중국어선감시 버튼 추가
2026-03-20 08:48:21 +09:00
Nan Kyung Lee
8f4558a81c
fix: 선박 팝업 텍스트 색상 고정 — 라이트 모드에서 정보 안 보이는 문제 해결
2026-03-20 08:45:43 +09:00
bb7c428528
docs: 릴리즈 노트 업데이트 + lint 에러 수정
2026-03-20 08:44:55 +09:00
Nan Kyung Lee
8b69bea667
fix: 한국/중국 선박 현황 패널 기본 접힘 처리
2026-03-20 07:27:47 +09:00
Nan Kyung Lee
7174dfd629
feat: 중국어선 조업분석, 어구/어망 분류, 이란 시설, 레이어 재구성
...
- 어선 분류 개선: AIS Ship Type 30 + category fallback + 선박명 패턴
- 어구/어망 카테고리 신설: 선박명_숫자_ / 선박명% 패턴으로 분류
- 중국어선 조업분석: GC-KCG-2026-001 + CSSA 보고서 기반 (안강망 추가)
- 중국어선 선단 탐지: 본선-부속선 쌍, 운반선 환적, 선망 선단
- 어구/어망 → 모선 연결선 시각화
- 어구 SVG 아이콘 5종 (트롤/자망/안강망/선망/기본)
- 이란 주변국 시설 레이어 (MEFacilityLayer 35개소)
- 사우스파르스 가스전 피격 + 카타르 라스라판 보복 공격 반영
- 한국 해군부대 10개소 추가
- 레이어 재구성: 선박(최상위) → 항공망(항공기+위성) → 해양안전 → 국가기관망
- 어선 국적별 하위 분류 (선박 분류 내 어선 펼치기)
- 오른쪽 패널 접기/펼치기 (한국현황, 중국현황, 조업분석, OSINT)
- 항공망 기본 접힘 처리
- 센서차트 기본 숨김
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 16:46:27 +09:00
4a6bc2d9cd
Merge pull request 'fix: OSINT 중복 저장 최종 수정 — DB UNIQUE + save try-catch' ( #82 ) from fix/osint-dedup-unique-index into develop
2026-03-19 13:07:38 +09:00