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>
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>