# Release Notes 이 문서는 [Keep a Changelog](https://keepachangelog.com/ko/1.0.0/) 형식을 따릅니다. ## [Unreleased] ## [2026-03-18] ### 수정 - AIS Import Job 스케줄 :15초→:45초 변경 — API 서버 데이터 적재 타이밍 변경으로 빈 응답(0건) 빈발 대응 ## [2026-03-17] ### 추가 - 최근 선박 위치 상세 조회 API (`POST /api/v1/vessels/recent-positions-detail`) — 공간 필터(폴리곤/원) + AIS 상세 필드(callSign, status, destination, eta, draught, length, width) ### 변경 - AIS API WebClient 버퍼 50MB→100MB 확장 — 피크 시 DataBufferLimitException 대응 ## [2026-03-13] ### 추가 - 다중구역/STS API 최적화 — AreaSearch/VesselContact 동시성·메모리 관리 통합, 순차 통과 SQL 동적 N-구역(2~10) 확장, chnPrmShipOnly 파라미터 추가 ### 변경 - 성능 최적화 — ArrayList 사전 할당, JTS Coordinate 재사용, equirectangular 거리 근사, stream→단일 루프 전환 - DataPipeline 대시보드 차트 시각화 개선 ## [2026-03-10] ### 추가 - 쿼리 메트릭 수집 확장 + 대시보드 성능 차트 — client IP 수집(REST/WS), 응답 크기 추정, timeseries API, 대시보드 쿼리 성능 차트 5종(응답시간·볼륨·캐시경로·응답크기·Top 클라이언트) - API/WS 쿼리 메트릭 이력 조회 기능 — BufferService(batch flush) + /history, /summary API + 프론트엔드 요약카드·필터·페이지네이션 ## [2026-03-09] ### 수정 - queryWithCache 단일 소스(DB/캐시) 응답 소실 버그 수정 — mergeTracksByVessel() 참조 공유 시 allTracks.clear()로 결과 파괴 ### 변경 - 운영 로그 레벨 정리 — CACHE-MONITOR 루틴 로그(putAll/get) DEBUG 전환, 중요 이벤트(removeRange/simplify) INFO 유지 - Spring Batch/HikariCP 로그 INFO→WARN 하향 ### 기타 - t_vessel_tracks_daily 파티션 영구 보존 설정 추가 (기본 3개월→무한) ## [2026-03-08] ### 추가 - L3 Daily 캐시 DP(Douglas-Peucker) 사전 간소화 — tolerance 0.001(~100m)로 직선 구간 제거, 방향 변화 보존 - Daily 캐시 인메모리 보관 기간 7일→14일 확대 (maxMemory 6→10GB) - 간소화 후 Haversine 기반 속도 재계산 (recalculateSpeeds) ### 변경 - Query DataSource: work_mem 256MB + synchronous_commit off 세션 튜닝 - Batch DataSource: synchronous_commit off 세션 튜닝 ### 기타 - 팀 워크플로우 v1.5.0→v1.6.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`) ### 수정 - cancelQuery idempotent 처리 — 완료된 쿼리 취소 시 에러 대신 정상 응답 - parseTimestamp 실패 로깅 추가, isNightTimeContact 야간 판정 로직 단순화 - 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 위치/항적 기반 전환 ### 변경 - SignalKindCode 매핑 규칙 개선 — aton/tug/tender→DEFAULT, shipName BUOY 검출 추가 - 응답 경로 signal_kind_code 치환 1회화 — 캐시 저장 시 치환, 응답 시 DB/캐시 값 직접 사용 - ChunkedTrackStreamingService 전수 최적화 — isQueryCancelled 버그수정, QueryContext 스레드 안전성, 쿼리 메트릭 DB 저장, 데드코드 400줄 삭제, VesselInfo N+1 해소 - 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