import { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Card, CardContent } from '@shared/components/ui/card'; import { Badge } from '@shared/components/ui/badge'; import { ExcelExport } from '@shared/components/common/ExcelExport'; import { PrintButton } from '@shared/components/common/PrintButton'; import { FileUpload } from '@shared/components/common/FileUpload'; import { SaveButton } from '@shared/components/common/SaveButton'; import { SearchInput } from '@shared/components/common/SearchInput'; import { Plus, Download, Clock, MapPin, Upload, X } from 'lucide-react'; interface Report { id: string; name: string; type: string; status: string; statusColor: string; date: string; mmsiNote: string; evidence: number; } const reports: Report[] = [ { id: 'RPT-2024-0142', name: '浙江렌센號', type: 'EEZ 침범', status: 'EEZ', statusColor: 'bg-green-500', date: '2026-01-20 14:30:00', mmsiNote: 'MMSI 변조', evidence: 12 }, { id: 'RPT-2024-0231', name: '福建海丰號', type: 'EEZ 침범', status: '확인', statusColor: 'bg-blue-500', date: '2026-01-20 14:29:00', mmsiNote: '', evidence: 8 }, { id: 'RPT-2024-0089', name: '무명선박-A', type: '다크베셀', status: '처리중', statusColor: 'bg-yellow-500', date: '2026-01-20 14:05:00', mmsiNote: '', evidence: 6 }, ]; export function ReportManagement() { const { t } = useTranslation('statistics'); const [selected, setSelected] = useState(reports[0]); const [search, setSearch] = useState(''); const [showUpload, setShowUpload] = useState(false); const filtered = reports.filter((r) => !search || r.name.includes(search) || r.id.includes(search) || r.type.includes(search) ); return (

{t('reports.title')} 데모 데이터 (백엔드 API 미구현)

{t('reports.desc')}

[]} columns={[ { key: 'id', label: '보고서번호' }, { key: 'name', label: '선박명' }, { key: 'type', label: '유형' }, { key: 'status', label: '상태' }, { key: 'date', label: '일시' }, { key: 'evidence', label: '증거수' }, ]} filename="보고서목록" />
{/* 증거 파일 업로드 */} {showUpload && (
증거 파일 업로드 (사진·영상·문서)
setShowUpload(false)} label="증거 저장" />
)}
{/* 보고서 목록 */}
보고서 목록
{filtered.map((r) => (
setSelected(r)} className={`p-4 rounded-lg border cursor-pointer transition-all ${ selected?.id === r.id ? 'bg-switch-background/40 border-blue-500/40' : 'bg-surface-raised border-slate-700/30 hover:bg-surface-overlay' }`} >
{r.name} {r.status}
{r.id}
{r.type} {r.mmsiNote && <>·{r.mmsiNote}} · {r.date}
증거 {r.evidence}건
))}
{/* 보고서 미리보기 */} {selected && (
보고서 미리보기
{/* 제목 */}

불법조업 의심 사건 보고서

보고서 번호: {selected.id}
{/* 사건 개요 */}
사건 개요
선박명:
{selected.name}
의심 유형:
{selected.mmsiNote || selected.type}
발생 일시:
2026-01-20 14:23:15
위치:
EEZ 북부 (37.56°N, 129.12°E)
{/* 지도 스냅샷 */}
지도 스냅샷
{/* AI 판단 설명 */}
AI 판단 설명
{['MMSI 변조 패턴 감지', '3kn 이하 저속 42분간 지속', 'EEZ 1.2km 침범'].map((t, i) => (
{t}
))}
{/* 조치 이력 */}
조치 이력
{['2026-01-20 14:30: 사건 등록', '2026-01-20 14:35: 증거 수집 완료', '2026-01-20 14:45: 보고서 생성'].map((t, i) => (
- {t}
))}
)}
); }