kcg-ai-monitoring/backend/src/main/resources/db/migration
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
..
V001__auth_init.sql feat: Phase 3 - 자체 인증 + 트리 기반 RBAC + 감사로그 + 데모 계정 2026-04-07 09:29:52 +09:00
V002__perm_tree.sql feat: Phase 3 - 자체 인증 + 트리 기반 RBAC + 감사로그 + 데모 계정 2026-04-07 09:29:52 +09:00
V003__perm_seed.sql feat: Phase 2 - Spring Boot 백엔드 + DB 마이그레이션 초기화 2026-04-07 09:01:13 +09:00
V004__access_logs.sql feat: Phase 2 - Spring Boot 백엔드 + DB 마이그레이션 초기화 2026-04-07 09:01:13 +09:00
V005__parent_workflow.sql feat: Phase 2 - Spring Boot 백엔드 + DB 마이그레이션 초기화 2026-04-07 09:01:13 +09:00
V006__demo_accounts.sql feat: Phase 3 - 자체 인증 + 트리 기반 RBAC + 감사로그 + 데모 계정 2026-04-07 09:29:52 +09:00
V007__perm_tree_label_align.sql fix: 권한 트리 UX 개선 + 라벨 사이드바 일치 + EXPORT 가드 2026-04-07 10:33:29 +09:00
V008__code_master.sql feat: S1 마스터 데이터 + prediction 기반 DB 스키마 (V008~V013) 2026-04-07 11:49:26 +09:00
V009__gear_type_master.sql feat: S1 마스터 데이터 + prediction 기반 DB 스키마 (V008~V013) 2026-04-07 11:49:26 +09:00
V010__zone_polygon_master.sql feat: S1 마스터 데이터 + prediction 기반 DB 스키마 (V008~V013) 2026-04-07 11:49:26 +09:00
V011__vessel_permit_patrol.sql feat: S1 마스터 데이터 + prediction 기반 DB 스키마 (V008~V013) 2026-04-07 11:49:26 +09:00
V012__prediction_events_stats.sql fix: prediction_stats_monthly.stat_month CHAR(7) → DATE 타입 변경 2026-04-07 12:05:04 +09:00
V013__enforcement_operations.sql fix: prediction_stats_monthly.stat_month CHAR(7) → DATE 타입 변경 2026-04-07 12:05:04 +09:00
V014__fleet_prediction_tables.sql fix: prediction e2e — 누락 테이블 12개 + 컬럼 매핑 + NUMERIC precision 통합 수정 2026-04-07 15:00:29 +09:00
V015__fix_numeric_precision.sql fix: prediction e2e — 누락 테이블 12개 + 컬럼 매핑 + NUMERIC precision 통합 수정 2026-04-07 15:00:29 +09:00
V016__parent_workflow_columns.sql fix: prediction 5가지 이슈 수정 — 모든 파이프라인 정상 동작 2026-04-08 06:47:53 +09:00
V017__role_color_hex.sql feat(backend): Role.colorHex 추가 + V017 migration 2026-04-08 10:52:36 +09:00
V018__prediction_event_features.sql feat(backend): 워크플로우 연결 Step 1 — 백엔드 기반 확장 2026-04-09 10:43:53 +09:00
V019__llm_ops_perm.sql fix(frontend): 메뉴 중복 해소 + system-flow 노드 동기화 + V019 권한 트리 2026-04-09 12:05:35 +09:00
V020__menu_config.sql feat: 메뉴 DB SSOT 구조화 — auth_perm_tree 기반 메뉴·권한·i18n 통합 2026-04-09 15:54:04 +09:00
V021__menu_into_perm_tree.sql feat: 메뉴 DB SSOT 구조화 — auth_perm_tree 기반 메뉴·권한·i18n 통합 2026-04-09 15:54:04 +09:00
V022__perm_tree_i18n_labels.sql feat: 메뉴 DB SSOT 구조화 — auth_perm_tree 기반 메뉴·권한·i18n 통합 2026-04-09 15:54:04 +09:00
V023__perm_tree_sort_align.sql feat: 메뉴 DB SSOT 구조화 — auth_perm_tree 기반 메뉴·권한·i18n 통합 2026-04-09 15:54:04 +09:00
V024__flatten_perm_tree.sql feat: 메뉴 DB SSOT 구조화 — auth_perm_tree 기반 메뉴·권한·i18n 통합 2026-04-09 15:54:04 +09:00
V025__lgcns_mlops_menu.sql feat: LGCNS MLOps + AI 보안(SER-10) + AI Agent 보안(SER-11) 메뉴 추가 2026-04-13 10:51:05 +09:00
V026__data_retention_policy_menu.sql feat: 시스템관리 > 감사·보안에 데이터 보관·파기 정책(DAR-10) 메뉴 추가 2026-04-14 16:55:05 +09:00
V027__data_model_verification_menu.sql feat: 시스템관리 > 감사·보안에 데이터 모델 검증(DAR-11) 메뉴 추가 2026-04-14 16:55:05 +09:00
V028__performance_monitoring_menu.sql feat: 시스템관리 > 감사·보안에 성능 모니터링(PER-01~06) 메뉴 추가 2026-04-15 17:12:53 +09:00
V029__fishery_permit_cn.sql feat(prediction): DAR-03 탐지 로직 보강 + 한중어업협정 906척 레지스트리 적재 2026-04-16 07:43:24 +09:00
V030__gear_identity_collision.sql feat(detection): GEAR_IDENTITY_COLLISION 탐지 패턴 추가 2026-04-17 06:53:12 +09:00
V031__alter_candidate_source_length.sql fix(db): candidate_source 컬럼 VARCHAR(30)→(100) 확장 (V031) 2026-04-17 11:51:35 +09:00
V032__menu_illegal_fishing_pattern.sql feat(detection): 불법 조업 이벤트 전용 페이지 신설 (Phase 0-2) 2026-04-20 05:46:13 +09:00
V033__menu_transshipment_detection.sql feat(detection): 환적 의심 전용 탐지 페이지 신설 (Phase 0-3) 2026-04-20 05:51:06 +09:00