From f4ec6dd0f555cd88953156c621a4e810a3c2c0bd Mon Sep 17 00:00:00 2001 From: Nan Kyung Lee Date: Tue, 24 Mar 2026 15:25:32 +0900 Subject: [PATCH] =?UTF-8?q?feat(korea):=20=EA=B2=BD=EB=B9=84=ED=95=A8?= =?UTF-8?q?=EC=A0=95=20=EC=9E=91=EC=A0=84=20=EA=B0=80=EC=9D=B4=EB=93=9C=20?= =?UTF-8?q?=EB=AA=A8=EB=8B=AC=20=EC=B6=94=EA=B0=80=20(GC-KCG-2026-001=20?= =?UTF-8?q?=EC=A0=9C7=EC=9E=A5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 탑메뉴 '작전가이드' 버튼 추가 (현장분석 옆) - 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) --- frontend/src/App.tsx | 14 ++ .../src/components/korea/OpsGuideModal.tsx | 216 ++++++++++++++++++ 2 files changed, 230 insertions(+) create mode 100644 frontend/src/components/korea/OpsGuideModal.tsx diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index a95ce4e..a50d4a4 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -25,6 +25,7 @@ import LoginPage from './components/auth/LoginPage'; import CollectorMonitor from './components/common/CollectorMonitor'; import { FieldAnalysisModal } from './components/korea/FieldAnalysisModal'; import { ReportModal } from './components/korea/ReportModal'; +import { OpsGuideModal } from './components/korea/OpsGuideModal'; import { filterFacilities } from './data/meEnergyHazardFacilities'; // 정적 데이터 카운트용 import (이미 useStaticDeckLayers에서 번들 포함됨) import { EAST_ASIA_PORTS } from './data/ports'; @@ -194,6 +195,7 @@ function AuthenticatedApp({ user, onLogout }: AuthenticatedAppProps) { const [showCollectorMonitor, setShowCollectorMonitor] = useState(false); const [showFieldAnalysis, setShowFieldAnalysis] = useState(false); const [showReport, setShowReport] = useState(false); + const [showOpsGuide, setShowOpsGuide] = useState(false); const [timeZone, setTimeZone] = useState<'KST' | 'UTC'>('KST'); const [hoveredShipMmsi, setHoveredShipMmsi] = useState(null); const [focusShipMmsi, setFocusShipMmsi] = useState(null); @@ -377,6 +379,15 @@ function AuthenticatedApp({ user, onLogout }: AuthenticatedAppProps) { 📊 현장분석 + )} @@ -654,6 +665,9 @@ function AuthenticatedApp({ user, onLogout }: AuthenticatedAppProps) { {showReport && ( setShowReport(false)} /> )} + {showOpsGuide && ( + setShowOpsGuide(false)} /> + )} void; +} + +type Tab = 'overview' | 'pt' | 'gn' | 'ps' | 'fc' | 'gear' | 'alert'; + +const C = { + bg: '#0a0f1a', card: '#111827', border: '#1e293b', + text: '#e2e8f0', dim: '#64748b', accent: '#3b82f6', + green: '#22c55e', red: '#ef4444', yellow: '#f59e0b', cyan: '#06b6d4', +}; + +const TABS: { key: Tab; label: string; icon: string }[] = [ + { key: 'overview', label: '작전 개요', icon: '🗺' }, + { key: 'pt', label: 'PT 저인망', icon: '🔴' }, + { key: 'gn', label: 'GN 유자망', icon: '🟡' }, + { key: 'ps', label: 'PS 위망', icon: '🟣' }, + { key: 'fc', label: 'FC 운반선', icon: '🟠' }, + { key: 'gear', label: '어구 수거', icon: '🪤' }, + { key: 'alert', label: '조치 기준', icon: '🚨' }, +]; + +export function OpsGuideModal({ onClose }: Props) { + const [tab, setTab] = useState('overview'); + + return ( +
+
e.stopPropagation()}> + + {/* Header */} +
+ + 경비함정 작전 가이드 + GC-KCG-2026-001 제7장 기반 + +
+ + {/* Tabs */} +
+ {TABS.map(t => ( + + ))} +
+ + {/* Content */} +
+ {tab === 'overview' && } + {tab === 'pt' && } + {tab === 'gn' && } + {tab === 'ps' && } + {tab === 'fc' && } + {tab === 'gear' && } + {tab === 'alert' && } +
+
+
+ ); +} + +// ── Styles ── +const h2: React.CSSProperties = { fontSize: 13, color: '#60a5fa', borderLeft: '3px solid #3b82f6', paddingLeft: 8, margin: '16px 0 8px' }; +const tbl: React.CSSProperties = { borderCollapse: 'collapse', width: '100%', fontSize: 10, margin: '6px 0' }; +const th: React.CSSProperties = { border: '1px solid #1e293b', padding: '4px 8px', background: '#1e293b', color: '#e2e8f0', fontSize: 9, fontWeight: 700, textAlign: 'left' }; +const td: React.CSSProperties = { border: '1px solid #1e293b', padding: '3px 8px', fontSize: 10 }; +const tdB: React.CSSProperties = { ...td, fontWeight: 700, color: '#e2e8f0' }; +const step: React.CSSProperties = { background: '#1e293b', borderRadius: 4, padding: '8px 12px', margin: '6px 0' }; +const stepNum: React.CSSProperties = { display: 'inline-block', background: '#3b82f6', color: '#fff', borderRadius: 3, padding: '1px 6px', fontSize: 9, fontWeight: 700, marginRight: 6 }; +const warn: React.CSSProperties = { background: 'rgba(239,68,68,0.1)', border: '1px solid rgba(239,68,68,0.3)', borderRadius: 4, padding: '6px 10px', margin: '8px 0', fontSize: 10, color: '#fca5a5' }; + +function OverviewTab() { + return (<> +

함정 톤급별 작전 구역 및 운용 체계

+ + + + + + + + +
함정 등급작전 기간담당 구역주요 임무
소형 (500톤급 이하)5~7일연안~근해 소구역연안 정치망 불법어구 수거. 소형 중국어선 무선 경고. 수역IV 유자망 순찰.
중형 (1,000톤급)7~10일근해 중구역 (2개 사각형)허가어선 허가증·조업일지 검사. GN 다크베셀 탐색. 불법어구 수거.
대형 (3,000톤급)10~14일원해 대구역 (광역)PT 본선·부속선 분리 감시·나포. PS 선단 추적. 야간 집어등 EO 탐지.
대형 경비함 (5,000톤급)10~14일작전 수역 전체작전 지휘함. 위망 선단 집중 감시. 나포 인계. 헬기·드론 운용.
+

작전 스케줄 (중형 7~10일)

+ + + + + + + + + + +
일차주요 임무세부 활동
D+1구역 진입·초기 탐색AIS 현황 파악, 중국 허가어선 목록 확인, 부표 탐색
D+2~3 (주간)집중 순찰PT 쌍 이격거리 확인, GN 투망 의심 추적, 허가증 검사
D+2~3 (야간)야간 탐색EO·레이더 집어등 탐색, PS 원형 패턴 감시, AIS 소실 SAR 확인
D+4~5불법어구 수거표지 없는 자망·정치망 발견·수거, GPS 기록·사진
D+5~6나포·검문위반 선박 정선, 허가증·어획량 확인, 나포 결정
D+7구역 정리·복귀잔여 어구 수거, 보고서 작성, 후속 인계, 항구 귀환
+ ); +} + +function PTTab() { + return (<> +

2척식 저인망 (PT) 대응 절차

+
⚠ 망을 예인하는 선미(船尾) 방향 접근 절대 금지 — 예인삭이 수중으로 길게 뻗어 스크루 감김 위험
+
STEP 1탐지 및 식별
AIS MMSI 조회 → 허가현황 DB 대조. 허가 여부·업종·조업 기간 즉시 확인. 본선(PT)·부속선(PT-S) 쌍 여부 확인, 분리 거리 측정.
+
STEP 2접근 및 경고
전방 측면(선수 45° 방향)으로 접근. VHF Ch.16 무선 경고 3회. 중국어 경고: "请立即停船接受检查"
+
STEP 3정선 후 승선 검사
①허가증(许可证) 원본 — 허가번호(C21-xxxxx) 및 유효기간
②조업일지 어획량 — 할당량(100톤/척) 대비 누적량
③망목 규격 실측 — 54mm 미만 시 금지 어구
+
STEP 4위반 유형 판정
①휴어기 조업 (4/16~10/15) → 즉시 나포
②할당량 100톤 초과 → 나포 또는 압수
③부속선 분리 독립조업 → 양선 동시 나포
+
STEP 5나포 또는 방면
위반 확정: 나포 후 목포·여수·제주·태안 입항 또는 대형 함정 인계
경미 위반: 현장 경고·시정 후 방면. 감시 시스템 알람 기록 등록
+ ); +} + +function GNTab() { + return (<> +

유자망 (GN) 대응 — 다크베셀 주의

+
⚠ 야간 부표 야광등 없으면 식별 어려움 — 레이더로 부표 군집 위치 선(先) 확인 후 외곽 접근
+
STEP 1다크베셀 탐지
AIS 공백 선박 레이더 탐색. SAR 위성 요청. 부표 다수 발견 시 자망 설치 선박 근접 정박 — 부표 반경 1NM 집중 수색
+
STEP 2그물 범위 확인 후 접근
부표 배치 방향으로 자망 연장선 추정. 그물 설치 방향 수직(90°)으로 외곽 접근
+
STEP 3AIS 재가동 요구
"请打开AIS" 경고. 재개 확인 후 MMSI 기록. 거부 시 강제 임검
+
STEP 4승선 검사
①허가증(C25-xxxxx)
②수역 확인 — GN은 수역IV까지 허가, 수역I 발견 시 즉시 위반
③어획물 — 할당량 평균 28톤/척
④망목 규격 및 그물 규모(길이·폭)
+
STEP 5불법 어구 판정
허가 구역 외 자망: 즉시 수거/절단
망목 기준 미달: 어구 전량 압수
자망 위치(GPS)·수거량 촬영 기록
+ ); +} + +function PSTab() { + return (<> +

위망 (PS) 선단 대응 — 선단 분산 주의

+
⚠ 단독 접근 금지 — 조명선 시야 교란, 선단 분산 도주 전술에 대비. 대형 함정 지원 요청 후 선단 전체 동시 제압
+
STEP 1선단 확인 및 보고
원형 궤적 + 고속(8~10kn)→저속({'<'}3kn) 패턴 탐지. 3척+ AIS 클러스터 확인. 즉시 상급 함정·관제센터 보고. 단독 접근 금지
+
STEP 2야간 집어등 식별
EO 탐지 또는 육안 집어등 확인. 조명선 MMSI 기록. 조명선 차단은 선단 제압 최후 단계
+
STEP 3선단 포위 (대형 함정 합류)
모선·운반선·조명선 동시 포위. 탈주 방향(서방 중국 측) 차단 우선 배치. VHF 경고 → 정선 요구 → 지속 도주 시 경고 사격
+
STEP 4선단 일제 임검
모선: 허가증(C23-xxxxx)·어획물·냉동 설비. 할당량 1,500톤/척(4척만)
운반선·조명선: 할당량 0톤 → 어획물 적재 시 불법 운반 증거
+
STEP 5나포 및 증거 확보
어획물 중량·어종 촬영. 냉동 설비 온도·저장 용량 기록. 宁波海裕 선단 VHF 교신 확보 권고. 대형 함정이 목포·여수항 인계
+

고위험 선박

+ + + + + + +
선박톤수비고
宁渔 22490톤할당량 0톤 — 해상 냉동·집하 거점(모선) 의심
宁渔 23541톤할당량 0톤 — 해상 냉동·집하 거점(모선) 의심
+ ); +} + +function FCTab() { + return (<> +

운반선 (FC) 및 환적 현장 대응

+
STEP 1환적 의심 알람 수신
감시 시스템: FC + 조업선 0.5NM 이내 + 양쪽 2kn 이하 + 30분 이상 → HIGH 알람. 해당 좌표 즉시 이동. 항공기·드론 선행 확인 요청
+
STEP 2현장 증거 촬영
두 선박 접현(接舷) 또는 고무보트 운반 확인. 드론 항공 촬영. 양선 MMSI·선명·선적항 기록. 접현 흔적(로프·충격 자국)
+
STEP 3양선 동시 정선·임검
운반선: 어획물 적재 내역·출발지·도착지. 냉동 화물 규모·어종
조업선: 허가량 대비 실어획량. PT-S 부속선이 운반선 역할 시 이중 위반
+
STEP 4증거 확보 및 조치
어획물 사진·중량 확보. 필요 시 전량 압수. 도주 시 경고 사격 절차. 나포 후 최근접 항구 입항
+

환적 신뢰도 판정

+ + + + + + + +
지속 시간신뢰도등급
30분60%HIGH
60분80%HIGH
120분+95%CRITICAL
+ ); +} + +function GearTab() { + return (<> +

불법 어구 수거 절차

+
⚠ 방치 자망에 스크루 감김 → 표류 사고 위험. 수거 전 반드시 엔진 정지 또는 저속. 야간 수거는 익일로 연기 원칙
+
STEP 1어구 발견 및 초기 기록
GPS 좌표(WGS84). 어구 종류 추정·사진 촬영. 소유자 번호·허가번호 확인. 규모(길이·폭·그물코) 육안 추정
+
STEP 2중국 어구 여부 판단
중국어 표기 부표 또는 광폭·장형 자망 확인. 인근 중국 어선 존재 여부. 판단 불가 시 수거 후 항구 감식
+
STEP 3수거 실행
RIB 또는 크레인 장비 활용. 어획물 있으면 어종·중량 기록 후 전량 압수. 절단 불가피 시 위치·잔존 기록
+
STEP 4수거 후 보고
일시·위치·종류·규모·어획물 현황 → 감시 시스템 등록. 항구 감식·증거 보존. 반복 발견 위치 → 집중 감시 구역 지정 요청
+

어구 종류별 식별

+ + + + + + + +
어구외형발견 위치수거 방법
불법 자망 (流刺網)수직 그물, 부표 나열, 광폭·장형수면 직하~중층 표류RIB + 양망기
불법 정치망 (張網)사각 프레임, 묘박 고정해저 고정, 좁은 수로크레인·양망기
불법 통발 (笼壶)원통/상자형, 로프 연결해저, 부표 표시RIB + 인력 인양
+ ); +} + +function AlertTab() { + return (<> +

단속 상황별 조치 기준

+ + + + + + + + + + + + +
위반 유형판정 기준즉시 조치알람
미등록 선박MMSI 허가 DB 미등록즉시 정선·나포◉ CRITICAL
휴어기 조업C21·C22: 4/16~10/15
C25: 6/2~8/31
즉시 나포◉ CRITICAL
허가 수역 이탈비허가 수역 진입경고 후 나포⚠ HIGH
PT 부속선 분리본선 이격 3NM+양선 동시 나포 검토⚠ HIGH→CRITICAL
환적 현장 포착FC+조업선 0.5NM+2kn+30분현장 촬영 후 양선 나포⚠ HIGH
불법 어구 발견표지 없음 또는 미허가즉시 수거·기록자체 판단
할당량 초과80~100% 초과어획물 계량·압수◉ CRITICAL
다크베셀AIS 공백 6시간+접근·임검 후 확인⚠ HIGH
+

감시 강화 시기

+ + + + + + + + +
시기상황대응
7~8월PS 16척만 조업 허가C21·C22·C25 발견 시 전원 비허가. 최대 감시 집중
5월GN만 허가수역 내 저인망(C21·C22) 탐지 시 즉시 위반
4월·10월기간 경계 시점4/16, 10/16 기준일 전후 집중 모니터링
1~3월·11~12월전 업종 가능수역 이탈 및 할당량 초과 중심 감시
+ ); +}