release: 2026-04-16.6 (5건 커밋) #64

병합
htlee develop 에서 main 로 7 commits 를 머지했습니다 2026-04-16 14:40:48 +09:00
소유자

릴리즈: 2026-04-16.6 — 중국어선 감시 실데이터 연동 + 특이운항 미니맵/판별 패널

추가 (feat)

  • 중국어선 감시 화면 실데이터 연동 (3개 탭) — deprecated iran proxy /api/vessel-analysis → 자체 백엔드 /api/analysis/* 전환. AI 감시 대시보드·환적접촉탐지·어구/어망 판별 모두 prediction 5분 사이클 결과 실시간 반영. 관심영역/VIIRS/기상/VTS 카드는 "데모 데이터" 뱃지, 비허가/제재/관심 선박 탭은 "준비중" 뱃지로 데이터 소스 미연동 항목 명시
  • 특이운항 미니맵 + 판별 구간 패널 — AI 감시 대시보드 선박 리스트 클릭 → 24h AIS 항적(MapLibre + deck.gl) + Dark/Spoofing/환적/어구위반/고위험 신호를 시간순 segment 로 병합해 지도 하이라이트(CRITICAL/WARNING/INFO 3단계). 판별 패널에 시작~종료·지속·N회 연속 감지·카테고리·설명 표시. 어구/어망 판별 탭 최하단 자동탐지 결과 row 클릭 시 상단 입력 폼 프리필
  • /api/analysis/stats — MMSI별 최신 row 기준 단일 쿼리 COUNT FILTER 집계(total/dark/spoofing/transship/risk 분포/zone 분포/fishing/avgRiskScore + windowStart/End). 선택적 mmsiPrefix 필터
  • /api/analysis/gear-detections — gear_code/judgment NOT NULL row MMSI 중복 제거 목록. 자동 탐지 결과 섹션 연동용
  • /api/analysis/vessels 필터 확장mmsiPrefix / minRiskScore / minFishingPct 쿼리 파라미터 추가
  • VesselAnalysisResponse 필드 확장violationCategories / bd09OffsetM / ucafScore / ucftScore / clusterId 5개 필드 노출
  • prediction 분석 시점 좌표 저장AnalysisResult + to_db_tuple + upsert_results SQL 에 lat/lon 추가. 분류 파이프라인 / 경량 분석 두 경로 주입. 기존 vessel_analysis_results.lat/lon 컬럼이 항상 NULL 이던 구조적 누락 해결 (첫 사이클 8173/8173 non-null 확인)

운영 배포 상태

  • rocky-211 backend JAR 2026-04-16 12:43 배포 완료, /actuator/health UP, 신규 엔드포인트 실운영 검증 완료
  • rocky-211 Flyway V029 checksum repair 1건 (prediction 수동 DDL 스키마 이력 정합성 맞춤)
  • redis-211 prediction 2026-04-16 14:14 배포 완료, 첫 사이클 upsert 8173 건 lat/lon non-null 확인 (412354335 실제 좌표 31.806755, 122.070525)
  • frontend: Gitea Actions CI/CD 자동 배포 대상

커밋 목록

  • 1def64d docs: 릴리즈 노트 정리 (2026-04-16.6)
  • 9607f79 feat: 중국어선 감시 실데이터 연동 + 특이운항 미니맵/판별 패널 (#62)
  • 14eb4c7 feat(prediction): vessel_analysis_results 에 분석 시점 lat/lon 저장
  • 820ed75 feat(backend): /api/analysis stats + gear-detections 엔드포인트 추가
  • d82eaf7 feat(frontend): 중국어선 감시 실데이터 연동 + 특이운항 미니맵/판별 패널

검증 체크리스트

  • Maven clean compile 성공 / tsc 0 errors / ESLint 0 errors
  • 운영 /api/analysis/stats?mmsiPrefix=412&hours=1 200 OK + 실데이터
  • 운영 /api/analysis/gear-detections?mmsiPrefix=412 UNREGISTERED_GEAR / GEAR_MISMATCH row 반환
  • prediction 첫 사이클 8173/8173 lat/lon non-null
  • Dev 서버 HMR 정상 (ChinaFishing / VesselMiniMap / VesselAnomalyPanel)
## 릴리즈: 2026-04-16.6 — 중국어선 감시 실데이터 연동 + 특이운항 미니맵/판별 패널 ### 추가 (feat) - **중국어선 감시 화면 실데이터 연동 (3개 탭)** — deprecated iran proxy `/api/vessel-analysis` → 자체 백엔드 `/api/analysis/*` 전환. AI 감시 대시보드·환적접촉탐지·어구/어망 판별 모두 prediction 5분 사이클 결과 실시간 반영. 관심영역/VIIRS/기상/VTS 카드는 "데모 데이터" 뱃지, 비허가/제재/관심 선박 탭은 "준비중" 뱃지로 데이터 소스 미연동 항목 명시 - **특이운항 미니맵 + 판별 구간 패널** — AI 감시 대시보드 선박 리스트 클릭 → 24h AIS 항적(MapLibre + deck.gl) + Dark/Spoofing/환적/어구위반/고위험 신호를 시간순 segment 로 병합해 지도 하이라이트(CRITICAL/WARNING/INFO 3단계). 판별 패널에 시작~종료·지속·N회 연속 감지·카테고리·설명 표시. 어구/어망 판별 탭 최하단 자동탐지 결과 row 클릭 시 상단 입력 폼 프리필 - **`/api/analysis/stats`** — MMSI별 최신 row 기준 단일 쿼리 COUNT FILTER 집계(total/dark/spoofing/transship/risk 분포/zone 분포/fishing/avgRiskScore + windowStart/End). 선택적 `mmsiPrefix` 필터 - **`/api/analysis/gear-detections`** — gear_code/judgment NOT NULL row MMSI 중복 제거 목록. 자동 탐지 결과 섹션 연동용 - **`/api/analysis/vessels` 필터 확장** — `mmsiPrefix` / `minRiskScore` / `minFishingPct` 쿼리 파라미터 추가 - **VesselAnalysisResponse 필드 확장** — `violationCategories` / `bd09OffsetM` / `ucafScore` / `ucftScore` / `clusterId` 5개 필드 노출 - **prediction 분석 시점 좌표 저장** — `AnalysisResult` + `to_db_tuple` + `upsert_results` SQL 에 `lat/lon` 추가. 분류 파이프라인 / 경량 분석 두 경로 주입. 기존 `vessel_analysis_results.lat/lon` 컬럼이 항상 NULL 이던 구조적 누락 해결 (첫 사이클 8173/8173 non-null 확인) ### 운영 배포 상태 - **rocky-211 backend JAR** 2026-04-16 12:43 배포 완료, `/actuator/health` UP, 신규 엔드포인트 실운영 검증 완료 - **rocky-211 Flyway V029 checksum repair** 1건 (prediction 수동 DDL 스키마 이력 정합성 맞춤) - **redis-211 prediction** 2026-04-16 14:14 배포 완료, 첫 사이클 upsert 8173 건 lat/lon non-null 확인 (412354335 실제 좌표 31.806755, 122.070525) - **frontend**: Gitea Actions CI/CD 자동 배포 대상 ### 커밋 목록 - `1def64d` docs: 릴리즈 노트 정리 (2026-04-16.6) - `9607f79` feat: 중국어선 감시 실데이터 연동 + 특이운항 미니맵/판별 패널 (#62) - `14eb4c7` feat(prediction): vessel_analysis_results 에 분석 시점 lat/lon 저장 - `820ed75` feat(backend): /api/analysis stats + gear-detections 엔드포인트 추가 - `d82eaf7` feat(frontend): 중국어선 감시 실데이터 연동 + 특이운항 미니맵/판별 패널 ### 검증 체크리스트 - [x] Maven clean compile 성공 / tsc 0 errors / ESLint 0 errors - [x] 운영 `/api/analysis/stats?mmsiPrefix=412&hours=1` 200 OK + 실데이터 - [x] 운영 `/api/analysis/gear-detections?mmsiPrefix=412` UNREGISTERED_GEAR / GEAR_MISMATCH row 반환 - [x] prediction 첫 사이클 8173/8173 lat/lon non-null - [x] Dev 서버 HMR 정상 (ChinaFishing / VesselMiniMap / VesselAnomalyPanel)
htlee added 7 commits 2026-04-16 14:40:37 +09:00
AnalysisResult 에 lat/lon 필드 + to_db_tuple 반영 + upsert_results SQL
컬럼 추가. 분류 파이프라인(last_row) / 경량 분석(all_positions) 두 경로
모두 분석 시점의 선박 위치를 함께 기록해 프론트 미니맵에서 특이운항
판별 위치를 실제 항적 위에 표시할 수 있게 한다.

배포 후 첫 사이클 8173/8173 lat/lon non-null 확인.
중국어선 감시 화면의 실데이터 연동을 위해 기존 /api/analysis 에 집계/
필터 기능을 보강한다.

- VesselAnalysisResult 엔티티에 violation_categories TEXT[] 매핑 추가
- VesselAnalysisResponse 에 violationCategories / bd09OffsetM /
  ucafScore / ucftScore / clusterId 5개 필드 노출
- /api/analysis/vessels 에 mmsiPrefix / minRiskScore / minFishingPct
  필터 파라미터 추가
- /api/analysis/stats: MMSI별 최신 row 기준 단일 쿼리 COUNT FILTER
  집계 (total/dark/spoofing/transship/risk별/zone별/fishing/avgRisk)
- /api/analysis/gear-detections: gear_code/judgment NOT NULL 인 row
  MMSI 중복 제거 목록. 어구/어망 판별 탭 '자동탐지 결과' 섹션 연동용
- deprecated 스텁 /api/vessel-analysis 는 프론트 호출 제거 후 다음
  릴리즈에서 삭제 예정 (이번 PR 에서는 유지)
Tab 1 AI 감시 대시보드 / Tab 2 환적탐지 / Tab 3 어구판별 3개 탭을
deprecated iran proxy 에서 자체 /api/analysis/* 로 전환하고, 특이운항
선박의 24h 항적과 판별 구간 상세를 지도와 패널로 제공한다.

서비스 계층
- analysisApi.ts 확장: getAnalysisStats / getAnalysisVessels(필터 3종) /
  getGearDetections 추가. VesselAnalysis 에 violationCategories /
  bd09OffsetM / ucafScore / ucftScore / clusterId 필드 노출
- analysisAdapter.ts: flat VesselAnalysis → nested VesselAnalysisItem
  변환으로 기존 컴포넌트 재사용
- vesselAnalysisApi.ts fetchVesselAnalysis @deprecated 마킹

Tab 1 (ChinaFishing)
- 서버 집계(stats) 기준 카운터 재구성. 중국어선 / Dark / 환적 / 고위험
  모두 mmsiPrefix=412 로 서버 필터
- 선박 리스트 vessel_type UNKNOWN 인 경우 "중국어선" + "미분류" 로 표시
- 특이운항 row 클릭 → 아래 행에 미니맵 + 판별 패널 배치
- 관심영역 / VIIRS / 기상 / VTS 카드에 "데모 데이터" 뱃지. 비허가 /
  제재 / 관심 탭 disabled + "준비중" 뱃지

Tab 2 (RealVesselAnalysis)
- /analysis/dark / /analysis/transship / /analysis/vessels mode별 분기
- 상단 통계 카드를 items 클라이언트 집계로 전환해 하단 테이블과 정합

Tab 3 (GearIdentification)
- 최하단 "최근 자동탐지 결과" 섹션 추가. row 클릭 시 상단 입력 폼
  프리필 + 결과 패널에 자동탐지 근거 프리셋

특이운항 판별 시각화 (VesselMiniMap / VesselAnomalyPanel /
vesselAnomaly 유틸)
- 24h getAnalysisHistory 로드 → classifyAnomaly 로 DARK/SPOOFING/
  TRANSSHIP/GEAR_VIOLATION/HIGH_RISK 5개 카테고리 판별. 좌표는
  top-level lat/lon 우선, features.gap_start_* fallback
- groupAnomaliesToSegments: 5분 주기 반복되는 동일 신호를 시작~종료
  구간으로 병합
- 미니맵: 전체 궤적은 연한 파랑, segment 시간범위와 매칭되는 AIS
  궤적 서브구간을 severity 색(CRITICAL 빨강 / WARNING 주황 / INFO
  파랑) 으로 하이라이트. 이벤트 기준 좌표는 작은 흰 점
- 판별 패널: 시작→종료 · 지속 · N회 연속 감지 · 카테고리 뱃지 · 설명
claude-bot 이 변경사항을 승인하였습니다. 2026-04-16 14:40:48 +09:00
claude-bot left a comment
멤버

릴리즈 승인 (via /release skill)

릴리즈 승인 (via /release skill)
htlee merged commit 2f94c2a0a4 into main 2026-04-16 14:40:48 +09:00
"로그인하여 이 대화에 참여"
No reviewers
레이블 없음
마일스톤 없음
담당자 없음
참여자 2명
알림
마감일
기한이 올바르지 않거나 범위를 벗어났습니다. 'yyyy-mm-dd'형식을 사용해주십시오.

마감일이 설정되지 않았습니다.

의존성

No dependencies set.

Reference: gc/kcg-ai-monitoring#64
No description provided.