- 해경 기지 선택 → 주변 불법어선·어구 자동 탐지
- 탐색 반경 10~100NM 설정 가능
- 중국 선박 대상 위험도 자동 판정 (CRITICAL/HIGH/MEDIUM)
- 비허가 수역 진입 → CRITICAL
- 수역I 저인망 의심 → HIGH
- 다크베셀 (AIS 비정상) → HIGH
- 어구/어망 AIS 신호 → HIGH
- 조업 추정 (2~6kn) → MEDIUM
- 운반선/환적 의심 → MEDIUM
- 우선순위 정렬: 위험도 → 거리순
- 선박 클릭 → 지도 이동 (flyTo)
- 순찰 루트 제안 (가장 가까운 고위험 대상부터)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 탑메뉴 '작전가이드' 버튼 추가 (현장분석 옆)
- OpsGuideModal: 7개 탭 구성
1. 작전 개요 (톤급별 구역/기간/임무 + 7일 스케줄)
2. PT 저인망 대응 5단계 (접근 금지구역, 중국어 경고문)
3. GN 유자망 대응 5단계 (다크베셀 탐지, AIS 재가동)
4. PS 위망 선단 대응 5단계 (단독접근 금지, 宁波海裕)
5. FC 운반선 환적 대응 4단계 (환적 신뢰도 판정)
6. 어구 수거 절차 4단계 (자망/정치망/통발 식별)
7. 조치 기준 (8대 위반유형 알람 등급 + 감시 강화 시기)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 한국 현황 탑메뉴에 '보고서' 버튼 추가
- ReportModal: 현재 실시간 데이터 기반 7개 섹션 자동 보고서
1. 전체 해양 현황 (선박수, 국적별)
2. 중국어선 활동 분석 (속도별 상태)
3. 어구/어망 유형별 분석 (GB/T 5147 기반)
4. 특정어업수역별 분포 (I~IV + 수역 외)
5. 위험 평가 (다크베셀, 수역 외, 조업 중)
6. 국적별 선박 TOP 10
7. 건의사항 5건
- 인쇄/PDF 내보내기 기능 (새 창 → window.print)
- 한중어업협정 허가현황 기반 자동 위반 판정
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- AI 해양분석 챗패널 추가 (AiChatPanel, Ollama/Qwen 2.5:7b)
- 시스템 프롬프트에 실시간 선박 데이터 자동 주입
- 보라/퍼플 톤 UI 차별화
- Vite 프록시 /ollama 추가
- 이란 발전소 20→29개 확장 (Wikipedia 기반 좌표/용량 보정)
- 선박 현황 폰트 사이즈 축소 (11→9px, 13→10px)
- OSINT LIVE 3개, 재난뉴스 2개 표시 + 스크롤
- 한국/중국 선박현황, 조업분석 기본 접힘
- AI 해양분석 기본 펼침
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 해외시설 10개국 에너지/위험시설 데이터 56개소 (meEnergyHazardFacilities.ts)
- 이란 발전소 8→20개 확장 (화력/수력/원자력/풍력/태양광)
- 3단계 레이어 트리: 국가 → 에너지/위험 → 세부시설 (발전소/풍력/원자력/화력/석유화학/LNG/유류/위험물)
- 해외시설 총합 카운트 표시 + 각 단계별 시설 수 자동 계산
- MEEnergyHazardLayer: 시설별 SVG/이모지 아이콘 + 팝업
- 풍력단지 아이콘 한국 현황과 동일 (WindTurbineIcon export)
- 풍력단지 색상 진하게 (#00bcd4 → #0891b2)
- 풍력단지 팝업 공통 스타일 적용
- 영국 → 이스라엘 교체 (overseasUK → overseasIsrael)
- LayerVisibility 인덱스 시그니처 추가 (동적 레이어 키 지원)
- D+20 나탄즈-디모나 핵시설 교차공격 리플레이 이벤트 6건
- 에쉬콜 발전소 좌표 수정 (아슈도드 정확 위치)
- Java 17 호환: Thread.ofVirtual() → new Thread() (로컬 빌드용)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- cnFacilities.ts: 중국 핵·화력발전소 7개, 군사시설 7개 데이터
- jpFacilities.ts: 일본 핵·화력발전소 8개, 군사시설 7개 데이터
- CnFacilityLayer / JpFacilityLayer: 마커+팝업 레이어 컴포넌트
- LayerPanel: OverseasItem에 children 계층 지원 추가
- App.tsx: cnPower/cnMilitary/jpPower/jpMilitary 레이어 상태 추가
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 선택된 어구그룹: 진한 주황 fill(0.25) + 굵은 경계선(3px)
- 모선 존재 시: 28px 주황 원 + glow + 'M' 라벨 + 선박명
- zoom 시 자동 선택 + 펼침
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- ShipLayer: buildFleetGroups() 제거 → Python analysisMap cluster_id 기반
- 선박 클릭 시 같은 cluster_id 멤버만 연결선 표시
- AnalysisOverlay: 보라색 100NM+ 클러스터 연결선 제거
- 프론트엔드 전체 순회 제거로 성능 복원
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 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>
- 위험도 버튼 클릭 → 해당 레벨 선박 목록 펼침 (최대 50척)
- 선박 행 클릭 → 지도 중심이동(flyTo) + 근거 상세 펼침
- 근거: 위치/활동/다크/GPS/선단 정보 표시
- 선택 선박 항적: trail 데이터를 GeoJSON LineString으로 렌더링
- KoreaMap flyTo 기능 구현 (mapRef.flyTo)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- KoreaMap에 allShips(전체 라이브 선박) prop 추가
- AnalysisOverlay: allShips 기반으로 분석 대상 매칭 (필터링 무관)
- 불법어선 마커: allShips에서 라이브 위치 참조 (위치 갭 해소)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 불법어선 필터: classifyFishingZone으로 수역 내 비한국 어선만 판별
- 수역 내 어선에 빨간 강조 링+선박명 마커 표시
- AI 분석 패널: 데이터 유무 무관하게 항상 표시
- Backend: analyzed_at 기준 1시간 윈도우로 확대 (10분 → 1시간)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- WGS84 사전 변환 GeoJSON 생성 (런타임 변환 제거)
- FishingZoneLayer: 수역별 색상 fill/line + 이름 라벨
- AnalysisOverlay: 마커 크기 확대, 한글 라벨, 선박명 표시
- fishingAnalysis.ts: EPSG:3857 변환 로직 제거, WGS84 JSON 직접 사용
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- 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>
- 한국 현황 탭 상단에 현장분석 버튼 추가 (지도 위 팝업)
- 통계 스트립: 총탐지/영해침범/조업중/AIS소실/클러스터/선종 분류
- 구역별 현황 + AI 파이프라인 상태 (LightGBM/BIRCH/UCAF)
- 선박 테이블: 필터/검색/경보 등급 정렬 + CSV 내보내기
- 선박 선택 시 허가 정보 조회 + 선박 사진 (S&P Global/MarineTraffic)
- 대응 명령 / ENG드론 버튼으로 경보 로그 기록
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 국적 분류 필터 추가 (한국/중국/북한/일본/미분류)
- S&P Global / MarineTraffic 탭 디자인 개선
- CCTV 백엔드 프록시 연결 (CctvProxyController)
- 풍력단지 레이어 (8개소 해상풍력)
- 항구 레이어 (한국/중국/일본/북한/대만 46개)
- 공항 확장 (중국 20, 일본 18, 북한 5, 대만 9개 추가)
- 군사시설 레이어 (중국/일본/북한/대만 38개소)
- 정부기관 레이어 (중국/일본 32개소)
- 북한 발사/포병진지 레이어 (19개소)
- 북한 미사일 낙하 시각화 (2026년 4건, 궤적 라인, 인근 선박 감지)
- 항행정보/팝업 공통 스타일 정리
- 선박 현황 정렬 스타일 개선
- 레이어 패널 폰트 축소
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- getMarineTrafficCategory: VesselType 문자열 매칭을 STAT5CODE 접두사보다 우선 적용
- STAT5CODE 매칭: 2번째 문자가 숫자인 경우만 적용 ("Cargo" → fishing 오분류 방지)
- EventLog 로컬 getShipMTCategory 제거 → 공통 getMarineTrafficCategory 통합
- EventLog 배지 색상: 하드코딩 hex → CSS 변수 (LayerPanel/ShipLayer와 동일)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- SensorChart: 히스토리 1H/2H/3H/6H, 기압 SLP 보정, 데이터 범위 확장(y축 시작)
- SensorChart Tooltip: KST 시간 포맷, 위치 상단 고정, 스타일 통일
- 지진 포인트 클릭 → 지도 flyTo + SeismicMarker 진도별 펄스 원형 표시
- SatelliteMap flyTo 지원 추가
- OilFacilityLayer: planned ring SVG 내부로 이동 (아이콘 중심 정렬 수정)
- 밝은 테마 text-shadow CSS 변수 분리 (dark/light)
- deploy.yml: SSH SCP+실행 각 3회 재시도 (kex_exchange 거부 대응)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- SensorChart: 지진 ScatterChart(진도별 색상/크기) + 기압 관측소별 개별 라인
- 한국 선박 현황 ON/OFF 토글 → 지도 강조 링/라벨 표시 (기본 ON)
- 우측 패널 한국 선박 목록: hover 시 지도 강조 링, 클릭 시 모달 호출
- ShipLayer: hoveredMmsi/focusMmsi props, 외부 모달 트리거
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- ShipLayer: IMO 기반 /signal-batch/api/v1/shipimg/{imo} API로 실제 이미지 목록 조회
- 각 이미지 path + _2.jpg(원본) 사용 (기존 잘못된 _1→_2→_3 번호 패턴 제거)
- IMO별 이미지 목록 캐시(spgImageCache) 적용
- LoginPage: KCG 로고 우측 하단에 DEMO 문구 오버레이
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>