10e99b6cee
Merge pull request 'fix: L1/L2 캐시 maxSize 상향 + AisTarget hitRate 타입 수정' ( #40 ) from feature/dashboard-phase-1 into develop
2026-02-19 20:47:45 +09:00
9774a75988
fix: L1/L2 캐시 maxSize 상향 + AisTarget hitRate 타입 수정
...
- L1(5분): 700K→1.5M (실측 612K, 87% 포화 → 41%)
- L2(시간): 1.4M→3.5M (실측 1.27M, 91% 포화 → 36%)
- AisTarget hitRate: String("64.41%") → double(64.41)
프론트엔드 .toFixed() 호출 시 타입 에러 수정
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 20:47:14 +09:00
5cf6e32d71
Merge pull request 'perf: API 응답 최적화 + 점진적 렌더링 + 해구 choropleth 지도' ( #39 ) from develop into main
Build & Deploy / build-and-deploy (push) Successful in 2m35s
2026-02-19 20:26:23 +09:00
8e7e8ff2de
Merge pull request 'perf: API 응답 최적화 + 점진적 렌더링 + 해구 choropleth 지도' ( #38 ) from feature/dashboard-phase-1 into develop
2026-02-19 20:25:52 +09:00
0cdb46d063
perf: API 응답 최적화 + 점진적 렌더링 + 해구 choropleth 지도
...
백엔드:
- haegu/realtime: DB 공간 JOIN(12s) → 인메모리 캐시 순회(~50ms)
- batch/statistics: N+1 JobExplorer(1.1s) → 단일 SQL 집계(~100ms)
- batch/daily-stats: N+1×7일(9s) → 직접 SQL 2쿼리(~200ms)
- throughput: pg_total_relation_size 매번 호출(1.4s) → Caffeine 5분 캐시
- quality: 풀스캔(0.6s) → 24시간 범위 제한
프론트엔드:
- Promise.allSettled 차단 → 개별 .then() 점진적 렌더링
- useCachedState 훅: 페이지 전환 시 이전 데이터 즉시 표시
- AreaStats: 해구 폴리곤 choropleth 지도 + 선박수 범례 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 20:24:28 +09:00
c3d0b15f97
Merge pull request 'feat: Phase 4 — 비정상 항적 + 시스템 메트릭 (7/7 완성)' ( #37 ) from develop into main
Build & Deploy / build-and-deploy (push) Successful in 2m40s
2026-02-19 19:20:31 +09:00
97b71b16e1
Merge pull request 'feat: Phase 4 — 비정상 항적 + 시스템 메트릭 (7/7 완성)' ( #36 ) from feature/dashboard-phase-1 into develop
2026-02-19 19:20:21 +09:00
7a17d8e1d8
feat: Phase 4 — 비정상 항적 + 시스템 메트릭 페이지 (7/7 완성)
...
- AbnormalTracks: 유형별 통계, 일별 추이 차트, 검출 목록 테이블
- abnormalApi 클라이언트 (recent, summary, types)
- ApiMetrics: 시스템 메트릭, 캐시 상세(L1/L2/L3/AIS), 처리 지연, 히트율
- 10초 폴링으로 실시간 갱신
- i18n: abnormal.* 17키 + metrics.* 21키 한/영 추가
- 전체 7개 페이지 라우팅 완성 (Navbar 메뉴 전부 활성)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 19:19:51 +09:00
6f17006811
Merge pull request 'feat: Phase 3 — API Explorer 지도 스캐폴딩' ( #35 ) from develop into main
Build & Deploy / build-and-deploy (push) Successful in 2m35s
2026-02-19 19:14:40 +09:00
20cb4b3337
Merge pull request 'feat: Phase 3 — API Explorer 지도 스캐폴딩' ( #34 ) from feature/dashboard-phase-1 into develop
2026-02-19 19:14:30 +09:00
8fafaad6c0
feat: Phase 3 — API Explorer 지도 스캐폴딩
...
- MapLibre GL JS 5 지도 컨테이너 (Light/Dark 테마 자동 전환)
- Sidebar 접기/펼치기 레이아웃 (320px 사이드바 + 전체 높이 지도)
- API 유형 선택 UI (최근 위치 / 해구별 항적 / 선박별 항적)
- gisApi 클라이언트 (V1/V2 REST API 인터페이스)
- 지도 상수 (한반도 중심, 항적 색상, OpenFreeMap 타일)
- i18n 한/영 explorer.* 키 12개 추가
- lazy loading: ApiExplorer 청크 분리 (gzip 278KB)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 19:14:03 +09:00
f49f1ac4e4
Merge pull request 'perf: L1/L2 캐시 maxSize 상향 (실측 기반)' ( #33 ) from develop into main
Build & Deploy / build-and-deploy (push) Successful in 2m45s
2026-02-19 19:10:05 +09:00
c44075d72b
Merge pull request 'perf: L1/L2 캐시 maxSize 상향 (실측 기반)' ( #32 ) from feature/dashboard-phase-1 into develop
2026-02-19 19:09:55 +09:00
4b8b48e494
perf: L1/L2 캐시 maxSize 상향 (실측 기반)
...
- L1 FiveMinTrackCache: 500K→700K (실측 504K, 30% 여유)
- L2 HourlyTrackCache: 780K→1.4M (실측 1.08M, 30% 여유)
- 기존 산정: 30K MMSI × 버킷 → 실측: 190K MMSI (6.3배 과소 산정)
- L2 메모리 영향: +1.5GB (총 8.6GB, 힙 20~24GB 기준 36~43%)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 19:09:29 +09:00
eabeee1bb7
Merge pull request 'fix: 해구 통계 ROUND 함수 타입 캐스팅 오류 수정' ( #31 ) from develop into main
Build & Deploy / build-and-deploy (push) Successful in 2m31s
2026-02-19 19:01:28 +09:00
9ca3057abd
Merge pull request 'fix: 해구 통계 ROUND 함수 타입 캐스팅 오류 수정' ( #30 ) from feature/dashboard-phase-1 into develop
2026-02-19 19:01:17 +09:00
029f912783
fix: 해구 통계 ROUND 함수 타입 캐스팅 오류 수정
...
GREATEST() 반환값이 double precision이라 ROUND(dp, int) 호출 시
PostgreSQL에서 미지원 함수 에러 발생 → 전체 나눗셈 결과를 ::numeric 캐스팅
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 19:00:50 +09:00
ec20dc8e76
Merge pull request 'fix: 해구 조회 바운딩 박스 간소화' ( #29 ) from develop into main
Build & Deploy / build-and-deploy (push) Successful in 2m36s
2026-02-19 18:54:44 +09:00
908f047f55
Merge pull request 'fix: 해구 조회 바운딩 박스 간소화' ( #28 ) from feature/dashboard-phase-1 into develop
2026-02-19 18:54:35 +09:00
61ec36c74a
fix: 해구 조회 ST_Contains 제거 — 바운딩 박스 조인으로 간소화
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 18:54:16 +09:00
e2a692a5e2
Merge pull request 'fix: 해구 통계 디버그 로깅' ( #27 ) from develop into main
Build & Deploy / build-and-deploy (push) Successful in 2m31s
2026-02-19 18:50:25 +09:00
c72e3cad36
Merge pull request 'debug: 해구 조회 에러 로깅' ( #24 ) from feature/dashboard-phase-1 into develop
2026-02-19 18:50:13 +09:00
6b1d5f3479
fix: 해구 통계 조회 에러 응답 노출 + 디버그 로깅 추가
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 18:49:27 +09:00
86f0c457e3
Merge pull request 'fix: toLocalDateTime 변환 강화' ( #23 ) from develop into main
Build & Deploy / build-and-deploy (push) Successful in 2m29s
2026-02-19 18:39:54 +09:00
b46b9335a0
Merge pull request 'fix: toLocalDateTime 변환 강화' ( #22 ) from feature/dashboard-phase-1 into develop
2026-02-19 18:39:50 +09:00
6c63133fd8
fix: toLocalDateTime 변환 강화 — 타입 불일치 로깅 + toString 폴백
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 18:39:43 +09:00
1c963b3d75
Merge pull request 'fix: Timestamp 캐스팅 오류 수정' ( #21 ) from develop into main
Build & Deploy / build-and-deploy (push) Successful in 2m31s
2026-02-19 18:36:19 +09:00
8911259f29
Merge pull request 'fix: Timestamp 캐스팅 오류 수정' ( #20 ) from feature/dashboard-phase-1 into develop
2026-02-19 18:35:35 +09:00
508cc264ee
fix: MonitoringController Timestamp 캐스팅 오류 수정
...
- JdbcTemplate이 timestamptz를 java.sql.Timestamp로 반환하는 케이스 처리
- toLocalDateTime() 유틸 메서드로 Timestamp/OffsetDateTime/LocalDateTime 통합 변환
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 18:34:47 +09:00
065f14ede4
Merge pull request 'fix: MonitoringController 레거시 타일 쿼리 전환 + 해구 통계 수정' ( #19 ) from develop into main
Build & Deploy / build-and-deploy (push) Successful in 2m45s
2026-02-19 18:30:55 +09:00
1f209954bf
Merge pull request 'fix: MonitoringController 레거시 타일 쿼리 → AIS 위치/항적 기반 전환' ( #18 ) from feature/dashboard-phase-1 into develop
2026-02-19 18:30:39 +09:00
986ae7bc14
fix: MonitoringController 레거시 타일 쿼리 → AIS 위치/항적 기반 전환
...
- /delay: t_tile_summary → t_vessel_tracks_5min 기반 처리 지연 계산
- /haegu/realtime: t_tile_summary JOIN → t_ais_position + t_haegu_definitions 공간 조인
- /throughput: 타일 처리량 → 5분 항적 처리량 + vessel_tracks 테이블 크기
- /quality: 타일 중복/누락 → 항적 중복 + AIS 위치 갱신 지연 검증
- 프론트엔드 타입/라벨 동기화 (HaeguStat, DataQuality, ProcessingDelay)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 18:30:16 +09:00
e70def6611
Merge pull request 'chore: AIS API 인증 정보 추가 (prod)' ( #17 ) from develop into main
Build & Deploy / build-and-deploy (push) Successful in 2m32s
2026-02-19 18:08:56 +09:00
e8f17dbd9a
Merge pull request 'chore: AIS API 인증 정보 추가' ( #16 ) from feature/dashboard-phase-1 into develop
2026-02-19 18:08:53 +09:00
61d68bb57b
chore: AIS API 인증 정보 추가 (prod)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 18:08:26 +09:00
318d2aefbb
Merge pull request 'Release: Phase 2 — DataPipeline + AreaStats' ( #15 ) from develop into main
Build & Deploy / build-and-deploy (push) Successful in 2m31s
2026-02-19 17:56:58 +09:00
53e8c2eb02
Merge pull request 'feat: Phase 2 — 데이터 파이프라인 + 해구 통계 페이지' ( #14 ) from feature/dashboard-phase-1 into develop
2026-02-19 17:56:20 +09:00
23e33fe4bb
feat: Phase 2 — 데이터 파이프라인 + 해구 통계 페이지
...
- DataPipeline: 4단계 흐름도(PipelineChart), L1/L2/L3 캐시 현황, 일별 처리량 추이(LineChart), 최근 실행 이력
- AreaStats: 대해구별 선박 통계 테이블, 처리량(파티션 크기), 데이터 품질 검증
- LineChart, PipelineChart 차트 컴포넌트 신규
- API 타입 추가 (CacheDetails, HaeguStat, ThroughputMetrics, DataQuality)
- monitorApi에 getCacheDetails, getHaeguRealtimeStats, getQuality 추가
- i18n pipeline.*, area.* 번역 키 추가 (ko/en)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 17:55:52 +09:00
478aa44e59
Merge pull request 'Release: Dashboard API 연동 오류 수정 + Phase 1 안정화' ( #13 ) from develop into main
Build & Deploy / build-and-deploy (push) Successful in 2m31s
2026-02-19 17:35:31 +09:00
dca887b292
Merge pull request 'fix: Dashboard API 연동 오류 수정 — 캐시 모니터링 + 렌더링 안전성' ( #12 ) from feature/dashboard-phase-1 into develop
2026-02-19 17:34:23 +09:00
631454f8c4
fix: Dashboard API 연동 오류 수정 — 캐시 모니터링 + 렌더링 안전성
...
- CacheMonitoringController: @ConditionalOnProperty 제거, 5개 캐시 통합 집계
- MonitoringController: delay API에서 delayMinutes/status 항상 반환
- FiveMinTrackCache/HourlyTrackCache: getStatsMap() 메서드 추가
- App.tsx: Suspense fallback + ErrorBoundary 추가
- Dashboard.tsx: nullable 필드 방어 (?? 연산자)
- formatters.ts: formatNumber null 안전 처리
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 17:33:08 +09:00
997dad8117
Merge pull request 'feat: React 19 SPA Dashboard Phase 1 + 안전 배포 시스템' ( #11 ) from feature/dashboard-phase-1 into main
...
Build & Deploy / build-and-deploy (push) Successful in 2m30s
Reviewed-on: #11
2026-02-19 17:09:18 +09:00
76f71fb374
Merge pull request 'feat: React 19 SPA Dashboard Phase 1 + 안전 배포 시스템' ( #10 ) from feature/dashboard-phase-1 into develop
...
Reviewed-on: #10
2026-02-19 17:09:04 +09:00
dd694bdcbb
feat: React 19 SPA Dashboard Phase 1 + 안전 배포 시스템
...
## React SPA Dashboard
- React 19 + Vite 7 + Tailwind CSS 4 + Recharts 2 SPA 구축
- Dashboard (배치현황/시스템메트릭/캐시/처리량) + JobMonitor (이력조회/Step상세)
- i18n 다국어(ko/en) 시스템, Light/Dark 테마 CSS 토큰 전환
- frontend-maven-plugin 1.15.1 (mvn package 시 자동 빌드)
- WebViewController SPA forward + context-path /signal-batch
- 레거시 HTML 48개 파일 전체 삭제
## 안전 배포
- VesselBatchScheduler @PreDestroy: 신규 Job 차단 + 실행 중 Job 완료 대기
- server.shutdown=graceful, timeout-per-shutdown-phase=3m
- deploy.yml: 활성 Job 3초 연속 확인 후 stop → 교체 → start
- signal-batch.service TimeoutStopSec 60→180
- scripts/deploy.sh: 수동 배포용 안전 스크립트
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 17:05:38 +09:00
941fb3cf4a
Merge pull request 'release: Gitea Actions CI/CD 파이프라인 + systemd 서비스 구성' ( #9 ) from develop into main
...
Build & Deploy / build-and-deploy (push) Failing after 3m6s
Reviewed-on: #9
2026-02-19 14:32:05 +09:00
fb1a9f21f2
Merge pull request 'ci: Gitea Actions CI/CD 파이프라인 + systemd 서비스 구성' ( #8 ) from feature/multilevel-track-cache into develop
2026-02-19 14:30:37 +09:00
2838af323b
ci: Gitea Actions CI/CD 파이프라인 + systemd 서비스 구성
...
- .gitea/workflows/deploy.yml: main push → 빌드 → SSH 배포 → 헬스체크
- JDK 17 + Maven 빌드, JAR 원자적 교체, 백업 5세대 유지
- 90초 startup 대기 (64GB 힙 AlwaysPreTouch)
- deploy/signal-batch.service: systemd 유닛 파일
- 64GB 힙, G1GC 24 병렬스레드, GC 로그 5×100MB 로테이션
- on-failure 자동 재시작, graceful shutdown (SIGTERM 60s)
- application-prod.yml: 64코어/250GB 서버 최적화 (파티션 32, 커넥션 풀 정리)
- 미사용 프로필 삭제: application-dev.yml, application-prod-mpr.yml, application-query.yml
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 14:30:02 +09:00
b9ace1681c
Merge pull request 'release: SNP API 전환 + 인메모리 캐시 최적화 + 다계층 캐시 조회 통합' ( #7 ) from develop into main
...
Reviewed-on: #7
2026-02-19 14:26:30 +09:00
29bf116246
Merge pull request 'feat: 다계층 인메모리 캐시(L1/L2/L3) 조회 통합 + CACHE-MONITOR 로그' ( #6 ) from feature/multilevel-track-cache into develop
2026-02-19 13:34:22 +09:00
bfc4614ce7
Merge pull request 'feat: Stale 데이터 비정상 궤적 전환 + vesselStatic N+1 쿼리 제거' ( #5 ) from feature/stale-data-abnormal-track into develop
2026-02-19 13:34:12 +09:00