커밋 그래프

233 커밋

작성자 SHA1 메시지 날짜
Nan Kyung Lee
d53eff8287 fix: Google TTS CORS 우회 — Vite 프록시 /api/gtts 추가 2026-03-24 15:59:33 +09:00
Nan Kyung Lee
4ab7990e5d fix: 중국어 TTS → Google Translate TTS로 변경 (고품질 발음) 2026-03-24 15:57:37 +09:00
Nan Kyung Lee
2c4535e57e fix: 중국어 TTS 끊김 해결 — Chrome pause/resume keepalive 2026-03-24 15:56:35 +09:00
Nan Kyung Lee
8b74f455df feat(korea): 중국어 경고문 TTS 음성 재생 (Web Speech API)
- 경고문 옆 🔊 버튼 클릭 → 중국어(zh-CN) 음성 재생
- SpeechSynthesis API 사용 (브라우저 내장, API 키 불필요)
- 재생 중 버튼 애니메이션 (pulse) + 배경 하이라이트
- 재생 속도 0.85x (확성기 방송용 느린 발화)
- 클릭: 클립보드 복사 / 🔊: 음성 재생 분리

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 15:54:43 +09:00
Nan Kyung Lee
1aa887fce4 feat(korea): 작전가이드 3탭 구성 — 실시간탐지 + 대응절차 + 조치기준
- 3개 탭: 실시간 탐지 / 대응 절차 / 조치 기준
- 의심 선박 클릭 → 자동으로 대응 절차 탭 전환
- 선박 추정 업종(PT/GN/PS/FC/GEAR) 자동 분류 → 해당 STEP 표시
- 중국어 경고문 업종별 배치 (클릭 → 클립보드 복사)
  PT: 4개, GN: 4개, PS: 4개, FC: 3개, GEAR: 1개
- 조치 기준 탭: 8대 위반유형 테이블 + 감시 강화 시기
- GC-KCG-2026-001 제7장 작전가이드 PDF 전문 반영

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 15:51:04 +09:00
Nan Kyung Lee
612973e9ab feat(korea): 임검침로 해상 루트 — 육지 우회 경유점 자동 삽입
- 한반도 해안 웨이포인트 14개 정의 (서해→남해→동해 시계방향)
- 육지 바운딩박스 2개 (본토 + 제주도)
- 직선이 육지 관통 시 해안 경유점 자동 삽입
- 시계/반시계 경로 중 짧은 쪽 자동 선택
- 직선 통과 가능 시 그대로 직선 유지

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 15:45:09 +09:00
Nan Kyung Lee
468a4a2424 feat(korea): 작전가이드 임검침로 점선 시각화 — 해경→의심선박 루트
- 작전가이드에서 선박 클릭 시 해경 기지→선박 점선 표시
- 위험도별 색상 (CRITICAL 빨강, HIGH 노랑, MEDIUM 파랑)
- 중간 지점에 거리(NM) + 출발지→도착지 라벨
- 해경 기지: 닻() 마커, 대상 선박: 색상 원형 마커
- OpsRoute 타입 export, KoreaMap에 opsRoute prop 추가

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 15:41:47 +09:00
Nan Kyung Lee
4edb8236f3 feat(korea): 작전가이드 창 드래그 이동 가능 + 크기 조절 2026-03-24 15:37:23 +09:00
Nan Kyung Lee
e4b6b1502b fix(korea): 작전가이드 선박 클릭 → 지도 이동 연결 (externalFlyTo prop) 2026-03-24 15:34:37 +09:00
Nan Kyung Lee
297d8aa56d refactor(korea): 작전가이드 → 실전형 순찰 루트 가이드로 변경
- 해경 기지 선택 → 주변 불법어선·어구 자동 탐지
- 탐색 반경 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>
2026-03-24 15:30:39 +09:00
Nan Kyung Lee
f4ec6dd0f5 feat(korea): 경비함정 작전 가이드 모달 추가 (GC-KCG-2026-001 제7장)
- 탑메뉴 '작전가이드' 버튼 추가 (현장분석 옆)
- 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>
2026-03-24 15:25:32 +09:00
Nan Kyung Lee
c98d6ba353 refactor: 보고서 버튼 현장분석 헤더로 이동 (LIVE↔닫기 사이) 2026-03-24 09:19:49 +09:00
Nan Kyung Lee
8f9dd0b546 feat(korea): 중국어선 감시현황 자동 보고서 생성 기능
- 한국 현황 탑메뉴에 '보고서' 버튼 추가
- 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>
2026-03-24 09:10:41 +09:00
Nan Kyung Lee
df269bf19b 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-23 17:07:57 +09:00
Nan Kyung Lee
a9573b020f fix: fishing-zones Polygon→MultiPolygon 변환 — KoreaMap 런타임 에러 해결 2026-03-23 16:35:04 +09:00
Nan Kyung Lee
5296e0df19 fix: fishing-zones-wgs84.json id 필드 추가 (ZONE_I~IV) — 런타임 크래시 해결 2026-03-23 16:28:03 +09:00
Nan Kyung Lee
be77d97eb3 feat(korea): AI 해양분석 챗 (Qwen 2.5) + 이란 발전소 29개 확장 + UI 개선
- 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>
2026-03-23 13:17:19 +09:00
Nan Kyung Lee
8448ea7985 fix(iran): 해외시설 3단계 레이어 복원 — overseasItems IIFE + count + 이스라엘 2026-03-23 11:12:11 +09:00
Nan Kyung Lee
0aff7302e6 fix: MEEnergyHazardLayer WindTurbineIcon 내부 정의, 선단패널 오른쪽 이동, fishing-zones 데이터 보정 2026-03-23 10:31:02 +09:00
Nan Kyung Lee
409e618a39 chore: develop 브랜치 동기화 — 충돌 해결 2026-03-23 10:06:38 +09:00
Nan Kyung Lee
6e37bc1f2d feat(iran): 해외시설 에너지/위험 3단계 레이어 + 나탄즈-디모나 리플레이 이벤트
- 해외시설 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>
2026-03-23 10:01:27 +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
Nan Kyung Lee
444b7a4a8d feat(layer): 해외시설 하위 중국·일본 발전소/군사시설 레이어 추가
- 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>
2026-03-21 18:17:34 +09:00
Nan Kyung Lee
e18a1a4932 feat(layer): 위험/산업 인프라 레이어 그룹 및 UI 개선
- 위험시설: 석유화학단지(5), LNG기지(10), 유류탱크(15), 위험물항만(6) 추가
- 에너지/발전시설: 원자력(5), 화력(5) 추가; 발전/변전·풍력단지 그룹 이동
- 산업공정/제조시설: 조선소(6), 폐수처리(5), 시멘트/제철소(5) 추가
- 위험/산업 인프라 수퍼그룹 신설 (3단계 계층 구조)
- LayerPanel: 레이어 수량을 우측 숫자 뱃지로 표시 (괄호 제거)
- 해외시설 하위항목: 이란탭=호르무즈 10개국, 한국탭=중국·일본
- EventLog: 재난/안전뉴스 섹션 추가 (한국탭), OSINT 접기/펼치기
- OSINT 뉴스 2026-03-21 기준으로 업데이트

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 09:47:44 +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