feat(detection): 환적 의심 전용 탐지 페이지 신설 (Phase 0-3) #86
No reviewers
레이블
레이블 없음
마일스톤 없음
담당자 없음
참여자 2명
알림
마감일
마감일이 설정되지 않았습니다.
의존성
No dependencies set.
Reference: gc/kcg-ai-monitoring#86
불러오는 중...
Reference in New Issue
Block a user
No description provided.
Delete Branch "feature/phase0-3-transshipment-detection"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
변경 사항
docs/prediction-analysis.md §7 P1 권고의 "UI 미노출 탐지" 해소 — Phase 0-3 (2/2, 마지막)
prediction
algorithms/transshipment.py의 5단계 필터 파이프라인(이종 쌍 → 감시영역 → RENDEZVOUS 90분+ → 점수 50+ → 밀집 방폭) 결과를 전체 목록·집계·상세 수준으로 조회하는 READ 전용 대시보드.기존 환적 관련 화면과의 차이
features/vessel/TransferDetection.tsxfeatures/detection/ChinaFishing.tsx(탭 2 "환적접촉탐지")/transshipment주요 변경
frontend/src/features/detection/TransshipmentDetection.tsx신설 (405 라인)PageContainer+PageHeader(ArrowLeftRight)+ KPI 5장features.transship_tier읽어 tier 분류,riskLevel로 종합 위험 분리DataTable8컬럼 (analyzed_at / mmsi / pair_mmsi / duration_min / tier / risk_score / risk_level / zone)features원본 + transship_score + 좌표등록 —
index.tsexport +componentRegistry.tslazyi18n —
detection.json에transshipment.*44키 (ko/en),common.jsonnav.transshipmentV033 마이그레이션 —
auth_perm_tree(detection:transshipment, nav_sort=910)+ 전 역할 READ권한 주의 (후속 개선 필요)
/api/analysis/transship의 @RequirePermission 은 현재detection:dark-vessel에 묶여 있음. 이 신규 메뉴의 READ 만으로는 API 호출 불가. 현행 운영자 역할(OPERATOR/ANALYST/FIELD)은 양쪽 READ 모두 보유하므로 실용 동작하나, 권한 일관성 관점에서는 VesselAnalysisController.listTransshipSuspects 의 @RequirePermission 을detection:transshipment로 교체하는 별도 MR 이 후속이다.테스트
npx tsc --noEmit통과 (0 에러)/api/analysis/transship?hours=6응답 기반 렌더링 + KPI 집계 확인관련
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 자동 적용 (백엔드 재배포 필요)Phase 0-3 환적 의심 전용 탐지 페이지 승인 (Phase 0 UI 미노출 탐지 해소 완료 2/2)