kcg-ai-monitoring/frontend/src
htlee cbfed23823 feat(detection): 환적 의심 전용 탐지 페이지 신설 (Phase 0-3)
docs/prediction-analysis.md §7 P1 권고의 "UI 미노출 탐지" 해소 중 두 번째.
prediction algorithms/transshipment.py 5단계 필터 파이프라인 결과를 전체 목록·
집계·상세 수준으로 조회하는 READ 전용 대시보드.

### 배경
기존 features/vessel/TransferDetection.tsx 는 선박 상세 수준(특정 MMSI 의 환적
이력)이고, 환적 의심 선박 전체 목록을 보려면 ChinaFishing 의 탭 중 하나를 거쳐야
했다. /api/analysis/transship 엔드포인트는 이미 존재하나 전용 페이지가 없었음.

### 변경
- frontend/src/features/detection/TransshipmentDetection.tsx 신설 (405 라인)
  - PageContainer + PageHeader(ArrowLeftRight) + KPI 5장
    (Total / Transship tier CRITICAL/HIGH/MEDIUM / Risk CRITICAL)
  - DataTable 8컬럼 (analyzedAt / mmsi / pairMmsi / duration / tier / risk / zone)
  - features.transship_tier 읽어 Badge 로 심각도 표시
  - 필터: hours(1/6/12/24/48) / riskLevel / mmsi 검색
  - 상세 패널: 분석 피처 JSON 원본 + 좌표 + transship_score
  - 기존 analysisApi.getTransshipSuspects 재사용 — backend 변경 없음
- index.ts + componentRegistry.ts 등록
- detection.json (ko/en) transshipment.* 네임스페이스 추가 (각 44키)
- common.json (ko/en) nav.transshipment 추가
- V033__menu_transshipment_detection.sql
  - auth_perm_tree(detection:transshipment, nav_sort=910)
  - ADMIN 5 ops + OPERATOR/ANALYST/FIELD/VIEWER READ

### 권한 주의
/api/analysis/transship 의 @RequirePermission 은 현재 detection:dark-vessel.
이 메뉴 READ 만으로는 API 호출 불가. 현행 운영자 역할(OPERATOR/ANALYST/FIELD)
은 dark-vessel READ 도 보유하므로 실용 동작.
향후 VesselAnalysisController.listTransshipSuspects 의 @RequirePermission 을
detection:transshipment 로 교체하는 권한 일관화는 별도 MR (후속).

### 검증
- npx tsc --noEmit 통과
- pre-commit tsc + ESLint 통과 예정
- Flyway V033 자동 적용 (백엔드 재배포 필요)
2026-04-20 05:51:06 +09:00
..
app feat(detection): 환적 의심 전용 탐지 페이지 신설 (Phase 0-3) 2026-04-20 05:51:06 +09:00
data feat: 프론트 전수 mock 정리 + UTC→KST 통일 + i18n 수정 + stats hourly API 2026-04-07 15:36:38 +09:00
design-system fix(frontend): a11y/호환성 — backdrop-filter webkit prefix + Button/Input/Select 접근 이름 2026-04-08 13:04:23 +09:00
features feat(detection): 환적 의심 전용 탐지 페이지 신설 (Phase 0-3) 2026-04-20 05:51:06 +09:00
flow refactor: 프로젝트 뼈대 정리 — iran 잔재 제거 + 백엔드 계층 분리 + 카탈로그 등록 2026-04-16 16:18:18 +09:00
hooks refactor: 프로젝트 뼈대 정리 — iran 잔재 제거 + 백엔드 계층 분리 + 카탈로그 등록 2026-04-16 16:18:18 +09:00
lib feat(detection): 환적 의심 전용 탐지 페이지 신설 (Phase 0-3) 2026-04-20 05:51:06 +09:00
services feat(detection): 불법 조업 이벤트 전용 페이지 신설 (Phase 0-2) 2026-04-20 05:46:13 +09:00
shared feat(detection): GEAR_IDENTITY_COLLISION 탐지 패턴 추가 2026-04-17 06:53:12 +09:00
stores refactor: 프로젝트 뼈대 정리 — iran 잔재 제거 + 백엔드 계층 분리 + 카탈로그 등록 2026-04-16 16:18:18 +09:00
styles feat(frontend): UI 공통 인프라 + 19개 분류 카탈로그 구축 2026-04-08 10:53:40 +09:00
designSystemMain.tsx feat(frontend): 디자인 시스템 쇼케이스 페이지 + 신규 공통 컴포넌트 2026-04-08 11:09:36 +09:00
main.tsx refactor: 모노레포 구조로 전환 (frontend/ + backend/ + database/) 2026-04-07 08:47:24 +09:00
systemFlowMain.tsx feat: System Flow 뷰어 추가 (system-flow.html) — 102 노드, 133 엣지 2026-04-07 17:10:22 +09:00
vite-env.d.ts feat: Phase 3 - 자체 인증 + 트리 기반 RBAC + 감사로그 + 데모 계정 2026-04-07 09:29:52 +09:00