이벤트 목록 (EventList): - eventStore를 GET /api/events 호출로 전환 - 서버 필터링 (level/status/category), 페이지네이션 - 상태 배지 (NEW/ACK/IN_PROGRESS/RESOLVED/FALSE_POSITIVE) - getEventStats() 기반 KPI 카드 단속 이력 (EnforcementHistory): - 신규 services/enforcement.ts (GET/POST /enforcement/records, /plans) - enforcementStore를 API 기반으로 전환 - KPI 카드 (총단속/처벌/AI일치/오탐) 클라이언트 계산 통계 (Statistics): - kpi.ts를 GET /api/stats/kpi, /stats/monthly 실제 호출로 전환 - toMonthlyTrend/toViolationTypes 변환 헬퍼 추가 - BarChart/AreaChart 기존 구조 유지 대시보드 KPI: - kpiStore를 API 기반으로 전환 (getKpiMetrics + getMonthlyStats) - Dashboard KPI_UI_MAP에 kpiKey 기반 매핑 추가 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
291 lines
8.0 KiB
TypeScript
291 lines
8.0 KiB
TypeScript
/**
|
|
* @deprecated EventList, Dashboard, MonitoringDashboard는 실제 API로 전환 완료.
|
|
* 아직 AIAlert, MobileService가 AlertRecord mock을 참조하므로 삭제하지 마세요.
|
|
*
|
|
* Shared mock data: events & alerts
|
|
*
|
|
* Sources:
|
|
* - AIAlert.tsx DATA (5 alerts) — mock 유지
|
|
* - MobileService.tsx ALERTS (3) — mock 유지
|
|
*/
|
|
|
|
// ────────────────────────────────────────────
|
|
// Event record (EventList.tsx as primary, supplemented with Dashboard titles/details)
|
|
// ────────────────────────────────────────────
|
|
export interface EventRecord {
|
|
id: string;
|
|
time: string;
|
|
level: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW';
|
|
type: string;
|
|
title: string;
|
|
detail: string;
|
|
vesselName?: string;
|
|
mmsi?: string;
|
|
area?: string;
|
|
lat?: number;
|
|
lng?: number;
|
|
speed?: number;
|
|
status?: string;
|
|
assignee?: string;
|
|
}
|
|
|
|
export const MOCK_EVENTS: EventRecord[] = [
|
|
{
|
|
id: 'EVT-0001',
|
|
time: '2026-04-03 08:47:12',
|
|
level: 'CRITICAL',
|
|
type: 'EEZ 침범',
|
|
title: 'EEZ 침범 탐지',
|
|
detail: '鲁荣渔56555 외 2척 — N37°12\' E124°38\' 진입',
|
|
vesselName: '鲁荣渔56555',
|
|
mmsi: '412345678',
|
|
area: 'EEZ 북부',
|
|
lat: 37.2012,
|
|
lng: 124.6345,
|
|
speed: 8.2,
|
|
status: '추적 중',
|
|
assignee: '3001함',
|
|
},
|
|
{
|
|
id: 'EVT-0002',
|
|
time: '2026-04-03 08:32:05',
|
|
level: 'HIGH',
|
|
type: '다크베셀',
|
|
title: '다크베셀 출현',
|
|
detail: 'MMSI 미상 선박 3척 — 서해 NLL 인근 AIS 소실',
|
|
vesselName: '미상선박-A',
|
|
mmsi: '미상',
|
|
area: '서해 NLL',
|
|
lat: 37.7512,
|
|
lng: 125.0234,
|
|
speed: 6.1,
|
|
status: '감시 중',
|
|
assignee: '상황실',
|
|
},
|
|
{
|
|
id: 'EVT-0003',
|
|
time: '2026-04-03 08:15:33',
|
|
level: 'CRITICAL',
|
|
type: '선단밀집',
|
|
title: '선단 밀집 경보',
|
|
detail: '중국어선 14척 밀집 — N36°48\' E124°22\' 반경 2nm',
|
|
vesselName: '선단(14척)',
|
|
mmsi: '다수',
|
|
area: 'EEZ 서부',
|
|
lat: 36.8001,
|
|
lng: 124.3678,
|
|
speed: 4.5,
|
|
status: '경보 발령',
|
|
assignee: '서해청',
|
|
},
|
|
{
|
|
id: 'EVT-0004',
|
|
time: '2026-04-03 07:58:44',
|
|
level: 'MEDIUM',
|
|
type: '불법환적',
|
|
title: '불법환적 의심',
|
|
detail: '冀黄港渔05001 + 운반선 접현 30분 이상',
|
|
vesselName: '冀黄港渔05001',
|
|
mmsi: '412987654',
|
|
area: '서해 중부',
|
|
lat: 36.4789,
|
|
lng: 124.2234,
|
|
speed: 0.3,
|
|
status: '확인 중',
|
|
assignee: '분석팀',
|
|
},
|
|
{
|
|
id: 'EVT-0005',
|
|
time: '2026-04-03 07:41:18',
|
|
level: 'HIGH',
|
|
type: 'MMSI 변조',
|
|
title: 'MMSI 변조 탐지',
|
|
detail: '浙甬渔60651 — MMSI 3회 변경 이력 감지',
|
|
vesselName: '浙甬渔60651',
|
|
mmsi: '412111222',
|
|
area: 'EEZ 남부',
|
|
lat: 35.8678,
|
|
lng: 125.5012,
|
|
speed: 5.8,
|
|
status: '감시 중',
|
|
assignee: '상황실',
|
|
},
|
|
{
|
|
id: 'EVT-0006',
|
|
time: '2026-04-03 07:23:01',
|
|
level: 'LOW',
|
|
type: '검문 완료',
|
|
title: '함정 검문 완료',
|
|
detail: '3009함 — 津塘渔03966 검문 완료, 경고 조치',
|
|
vesselName: '津塘渔03966',
|
|
mmsi: '412333444',
|
|
area: '서해 북부',
|
|
lat: 37.5012,
|
|
lng: 124.7890,
|
|
speed: 0,
|
|
status: '완료',
|
|
assignee: '3009함',
|
|
},
|
|
{
|
|
id: 'EVT-0007',
|
|
time: '2026-04-03 07:05:55',
|
|
level: 'MEDIUM',
|
|
type: 'AIS 재송출',
|
|
title: 'AIS 재송출',
|
|
detail: '辽庄渔55567 — 4시간 소실 후 재송출',
|
|
vesselName: '辽庄渔55567',
|
|
mmsi: '412555666',
|
|
area: 'EEZ 북부',
|
|
lat: 37.3456,
|
|
lng: 124.8901,
|
|
speed: 3.2,
|
|
status: '확인 완료',
|
|
assignee: '상황실',
|
|
},
|
|
{
|
|
id: 'EVT-0008',
|
|
time: '2026-04-03 06:48:22',
|
|
level: 'CRITICAL',
|
|
type: 'EEZ 침범',
|
|
title: '긴급 침범 경보',
|
|
detail: '浙岱渔02856 외 7척 — 서해 5도 수역 진입',
|
|
vesselName: '浙岱渔02856',
|
|
mmsi: '412777888',
|
|
area: '서해 5도',
|
|
lat: 37.0567,
|
|
lng: 124.9234,
|
|
speed: 4.5,
|
|
status: '추적 중',
|
|
assignee: '서특단',
|
|
},
|
|
{
|
|
id: 'EVT-0009',
|
|
time: '2026-04-03 06:30:00',
|
|
level: 'LOW',
|
|
type: '정기 보고',
|
|
title: '정기 보고',
|
|
detail: '전 해역 야간 감시 결과 보고 완료',
|
|
vesselName: undefined,
|
|
mmsi: undefined,
|
|
area: '전 해역',
|
|
status: '완료',
|
|
assignee: '상황실',
|
|
},
|
|
{
|
|
id: 'EVT-0010',
|
|
time: '2026-04-03 06:12:33',
|
|
level: 'HIGH',
|
|
type: '속력 이상',
|
|
title: '속력 이상 탐지',
|
|
detail: '鲁荣渔51277 — 18kt 고속 이동, 도주 패턴',
|
|
vesselName: '鲁荣渔51277',
|
|
mmsi: '412999000',
|
|
area: '동해 중부',
|
|
lat: 36.2512,
|
|
lng: 130.0890,
|
|
speed: 18.1,
|
|
status: '추적 중',
|
|
assignee: '동해청',
|
|
},
|
|
{
|
|
id: 'EVT-0011',
|
|
time: '2026-04-03 05:45:10',
|
|
level: 'MEDIUM',
|
|
type: 'AIS 소실',
|
|
title: 'AIS 소실',
|
|
detail: '浙甬渔30112 남해 외해 AIS 소실',
|
|
vesselName: '浙甬渔30112',
|
|
mmsi: '412444555',
|
|
area: '남해 외해',
|
|
lat: 34.1234,
|
|
lng: 128.5678,
|
|
status: '감시 중',
|
|
assignee: '남해청',
|
|
},
|
|
{
|
|
id: 'EVT-0012',
|
|
time: '2026-04-03 05:20:48',
|
|
level: 'HIGH',
|
|
type: '불법환적',
|
|
title: '불법환적 의심',
|
|
detail: '冀黄港渔03012 EEZ 서부 환적 의심',
|
|
vesselName: '冀黄港渔03012',
|
|
mmsi: '412666777',
|
|
area: 'EEZ 서부',
|
|
lat: 36.5678,
|
|
lng: 124.1234,
|
|
speed: 0.5,
|
|
status: '확인 중',
|
|
assignee: '분석팀',
|
|
},
|
|
{
|
|
id: 'EVT-0013',
|
|
time: '2026-04-03 04:55:30',
|
|
level: 'LOW',
|
|
type: '구역 이탈',
|
|
title: '구역 이탈',
|
|
detail: '한국어선-12 연안 구역 이탈 경고',
|
|
vesselName: '한국어선-12',
|
|
mmsi: '440123456',
|
|
area: '연안 구역',
|
|
lat: 35.4567,
|
|
lng: 129.3456,
|
|
speed: 7.0,
|
|
status: '경고 완료',
|
|
assignee: '포항서',
|
|
},
|
|
{
|
|
id: 'EVT-0014',
|
|
time: '2026-04-03 04:30:15',
|
|
level: 'CRITICAL',
|
|
type: 'EEZ 침범',
|
|
title: 'EEZ 침범 — 나포 작전',
|
|
detail: '鲁威渔15028 EEZ 북부 나포 작전 진행',
|
|
vesselName: '鲁威渔15028',
|
|
mmsi: '412888999',
|
|
area: 'EEZ 북부',
|
|
lat: 37.4012,
|
|
lng: 124.5567,
|
|
speed: 6.9,
|
|
status: '나포 작전',
|
|
assignee: '3001함',
|
|
},
|
|
{
|
|
id: 'EVT-0015',
|
|
time: '2026-04-03 04:10:00',
|
|
level: 'MEDIUM',
|
|
type: 'MMSI 변조',
|
|
title: 'MMSI 변조 의심',
|
|
detail: '浙甬渔99871 남해 연안 MMSI 변조 의심',
|
|
vesselName: '浙甬渔99871',
|
|
mmsi: '412222333',
|
|
area: '남해 연안',
|
|
lat: 34.5678,
|
|
lng: 127.8901,
|
|
speed: 4.2,
|
|
status: '확인 중',
|
|
assignee: '상황실',
|
|
},
|
|
];
|
|
|
|
// ────────────────────────────────────────────
|
|
// Alert records (AIAlert.tsx as primary)
|
|
// ────────────────────────────────────────────
|
|
export interface AlertRecord {
|
|
id: string;
|
|
time: string;
|
|
type: string;
|
|
location: string;
|
|
confidence: number;
|
|
target: string;
|
|
status: string;
|
|
}
|
|
|
|
export const MOCK_ALERTS: AlertRecord[] = [
|
|
{ id: 'ALR-001', time: '08:47:12', type: 'EEZ 침범', location: 'N37.20 E124.63', confidence: 96, target: '3001함, 상황실', status: '수신확인' },
|
|
{ id: 'ALR-002', time: '08:32:05', type: '다크베셀', location: 'N37.75 E125.02', confidence: 91, target: '상황실', status: '수신확인' },
|
|
{ id: 'ALR-003', time: '08:15:33', type: '선단밀집', location: 'N36.80 E124.37', confidence: 88, target: '서특단, 상황실', status: '발송완료' },
|
|
{ id: 'ALR-004', time: '07:58:44', type: '불법환적', location: 'N36.48 E124.22', confidence: 82, target: '3005함', status: '수신확인' },
|
|
{ id: 'ALR-005', time: '07:41:18', type: 'MMSI변조', location: 'N35.87 E125.50', confidence: 94, target: '상황실', status: '미수신' },
|
|
];
|