# Release Notes 이 문서는 [Keep a Changelog](https://keepachangelog.com/ko/1.0.0/) 형식을 따릅니다. ## [Unreleased] ## [2026-03-02.2] ### 변경 - SignalKindCode 매핑 규칙 개선 — aton/tug/tender→DEFAULT, shipName BUOY 검출 추가 - 응답 경로 signal_kind_code 치환 1회화 — 캐시 저장 시 치환, 응답 시 DB/캐시 값 직접 사용 - ChunkedTrackStreamingService 전수 최적화 — isQueryCancelled 버그수정, QueryContext 스레드 안전성, 쿼리 메트릭 DB 저장, 데드코드 400줄 삭제, VesselInfo N+1 해소 ## [2026-03-02] ### 추가 - React 19 SPA Dashboard (7페이지: Dashboard, JobMonitor, DataPipeline, AreaStats, ApiExplorer, AbnormalTracks, ApiMetrics) - 다계층 인메모리 캐시(L1/L2/L3) 조회 통합 + CACHE-MONITOR 로그 - Ship-GIS 기능 이관 — 최근위치/선박항적/뷰포트 리플레이 - 다중구역이동 항적 분석 + STS 접촉 분석 프론트엔드 이관 - 구역분석/STS 보고서 모달 + 이미지 저장 - 항적/리플레이 선종 아이콘 + Raw Data 패널 - DataPipeline 일별 차트 시각화 개선 — Stacked Bar + Duration Bar - ChnPrmShip 전용 DB 이력 + API enrichment + ShipImage V2 - 중국허가선박 최신 위치 조회 API - recent-positions IMO 필드 + 선박사진 보유 목록 API + 사진 enrichment - Stale 데이터 비정상 궤적 전환 — 과거 timestamp 수신 시 정보 보존 - L1/L2/L3 캐시 O(1) 키 기반 직접 조회 (전체 스캔 O(n) 대체) - 64GB JVM 메모리 예산 논리적 파티셔닝 (캐시 35GB / 쿼리 20GB / 시스템 9GB) - L2 HourlyTrackCache 6시간 경과 엔트리 Nth-point 간소화 스케줄러 - 메모리 예산 모니터링 API (`GET /api/monitoring/cache/budget`) ### 수정 - ST_AsText WKT 공백 불일치로 인한 daily merge 전량 필터 수정 - L2 워밍업 범위 확장 — Daily Job 전 기동 시 어제 데이터 포함 - html2canvas oklch/oklab 색상 파싱 에러 수정 - 항적 조회 500 에러 + 리플레이 쿼리 무반응 수정 - shipimg 경로 충돌 수정 — /{imo} 숫자 패턴 제약 추가 - UTC 타임존 변환 + Daily 캐시 부분 fallback 추가 - V2 캐시 조회 시 누락 MMSI DB fallback 추가 - 캐시 maxSize 설정 경로 수정 — application.yml이 실제 소스 - 해구 통계 ROUND 함수 타입 캐스팅 오류 수정 - 해구 조회 ST_Contains 제거 — 바운딩 박스 조인으로 간소화 - Dashboard API 연동 오류 수정 — 캐시 모니터링 + 렌더링 안전성 - MonitoringController 레거시 타일 쿼리 → AIS 위치/항적 기반 전환 ### 변경 - API 응답 크기 최적화 — gzip 압축, NON_NULL, 정밀도 제한 - API 응답 최적화 + 점진적 렌더링 + 해구 choropleth 지도 - Hourly Job 인메모리 병합 전환 — N+1 SQL 제거 - Daily Job 인메모리 캐시 기반 최적화 — N+1 SQL 제거 - L1/L2 캐시 maxSize 실측 기반 상향 (L2 3.5M→7M) - SNP API 전환 및 레거시 코드 전면 정리 ### 기타 - Gitea Actions CI/CD 파이프라인 + systemd 서비스 구성 - 팀 워크플로우 v1.2.0→v1.5.0 동기화 - Swagger UI 현행화 — 서버 URL, DTO @Schema, @Parameter