release: 2026-03-27 (5건 커밋) #116

병합
htlee develop 에서 main 로 5 commits 를 머지했습니다 2026-03-27 06:40:38 +09:00

5 커밋

작성자 SHA1 메시지 날짜
d6ab622480 docs: 릴리즈 노트 정리 (2026-03-27) 2026-03-27 06:38:22 +09:00
d31eeef193 Merge pull request 'feat: WebSocket 리플레이 캐시 통합 + 쿼리 메트릭 사용자 ID 수집' (#115) from feature/ws-cache-integration-and-client-metrics into develop 2026-03-27 06:36:30 +09:00
296b89327b docs: 릴리즈 노트 업데이트 2026-03-27 06:34:25 +09:00
3333b2cec1 feat(metrics): 쿼리 메트릭 사용자 ID 수집 + 대시보드 IP/ID 토글
GC_SESSION JWT 쿠키에서 인증된 사용자 email을 추출하여 쿼리 메트릭에 기록.
대시보드 Top 클라이언트를 IP 기준 또는 사용자 ID 기준으로 전환 가능.

백엔드:
- WebSocket 핸드셰이크에서 GC_SESSION 쿠키 JWT payload → email 추출
- QueryMetric에 clientId 필드 추가, t_query_metrics에 client_id 컬럼 자동 생성
- timeseries API에 groupBy=ip|id 파라미터 추가

프론트엔드:
- Dashboard Top 클라이언트 섹션에 IP/ID 세그먼트 토글 추가
- 토글 전환 시 즉시 재조회

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 06:27:43 +09:00
8a97321a90 feat(websocket): 리플레이 쿼리 L1/L2 캐시 통합 — DB 의존 제거
WebSocket 리플레이 쿼리가 캐시 범위 내 조회에도 100% DB 경로를 사용하던 문제 수정.

- HOURLY/FIVE_MINUTE 전략에 L1(FiveMinTrackCache)/L2(HourlyTrackCache) 캐시 직접 조회 적용
- currentHourStart 기준 L1/L2 자동 라우팅 (현재시간 정각 이후→L1, 이전→L2)
- 뷰포트 필터를 캐시 데이터에서 직접 수행 (경량 WKT 파싱, JTS 불필요)
- vessel info SQL 컬럼명 오류 수정 (ship_nm → name)
- QueryBenchmark에 cacheHourlyRanges/cacheFiveMinRanges 추가, determinePath 3레벨 캐시 반영
- collectViewportVesselIds에서 HOURLY/5MIN DB 쿼리 제거 (캐시에서 처리)

당일 3시간 쿼리: DB 100% → CACHE 100%, 14일 쿼리: CACHE 100% (L3 범위 내)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 06:27:22 +09:00