Phase 1: 모노레포 디렉토리 구조 구축 - 기존 React 프로젝트를 frontend/ 디렉토리로 이동 (git mv) - backend/ 디렉토리 생성 (Phase 2에서 Spring Boot 초기화) - database/migration/ 디렉토리 생성 (Phase 2에서 Flyway 마이그레이션) - 루트 .gitignore에 frontend/, backend/ 경로 반영 - 루트 CLAUDE.md를 모노레포 가이드로 갱신 - Makefile 추가 (dev/build/lint 통합 명령) - frontend/vite.config.ts에 /api → :8080 백엔드 proxy 설정 - .githooks/pre-commit을 모노레포 구조에 맞게 갱신 (frontend/ 변경 시 frontend/ 내부에서 검증) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
52 lines
2.0 KiB
TypeScript
52 lines
2.0 KiB
TypeScript
export interface KpiMetric {
|
|
id: string;
|
|
label: string;
|
|
value: number;
|
|
prev?: number;
|
|
unit?: string;
|
|
description?: string;
|
|
}
|
|
|
|
export interface MonthlyTrend {
|
|
month: string;
|
|
enforce: number;
|
|
detect: number;
|
|
accuracy: number;
|
|
}
|
|
|
|
export interface ViolationType {
|
|
type: string;
|
|
count: number;
|
|
pct: number;
|
|
}
|
|
|
|
/** Dashboard KPI (6 metrics) — src/features/dashboard/Dashboard.tsx */
|
|
export const MOCK_KPI_METRICS: KpiMetric[] = [
|
|
{ id: 'KPI-RT', label: '실시간 탐지', value: 47, prev: 42, description: 'AI 감시 탐지 선박' },
|
|
{ id: 'KPI-EEZ', label: 'EEZ 침범', value: 18, prev: 21, description: '배타적경제수역 침범' },
|
|
{ id: 'KPI-DV', label: '다크베셀', value: 12, prev: 9, description: 'AIS 미송출 선박' },
|
|
{ id: 'KPI-TR', label: '불법환적 의심', value: 8, prev: 6, description: '해상전재 의심 건' },
|
|
{ id: 'KPI-TK', label: '추적 중', value: 15, prev: 13, description: '함정 추적 진행' },
|
|
{ id: 'KPI-EN', label: '나포/검문', value: 3, prev: 2, description: '금일 단속 실적' },
|
|
];
|
|
|
|
/** Statistics monthly trend (7 months) — src/features/statistics/Statistics.tsx */
|
|
export const MOCK_MONTHLY_TRENDS: MonthlyTrend[] = [
|
|
{ month: '10월', enforce: 42, detect: 128, accuracy: 81 },
|
|
{ month: '11월', enforce: 38, detect: 145, accuracy: 84 },
|
|
{ month: '12월', enforce: 55, detect: 167, accuracy: 86 },
|
|
{ month: '1월', enforce: 61, detect: 189, accuracy: 88 },
|
|
{ month: '2월', enforce: 48, detect: 156, accuracy: 89 },
|
|
{ month: '3월', enforce: 52, detect: 172, accuracy: 90 },
|
|
{ month: '4월', enforce: 15, detect: 67, accuracy: 93 },
|
|
];
|
|
|
|
/** Statistics violation types (5 types) — src/features/statistics/Statistics.tsx */
|
|
export const MOCK_VIOLATION_TYPES: ViolationType[] = [
|
|
{ type: 'EEZ 침범', count: 124, pct: 35 },
|
|
{ type: '다크베셀', count: 89, pct: 25 },
|
|
{ type: 'MMSI 변조', count: 64, pct: 18 },
|
|
{ type: '불법환적', count: 43, pct: 12 },
|
|
{ type: '어구 불법', count: 35, pct: 10 },
|
|
];
|