선박 항적 실시간 수집 및 배치 집계 시스템 (Spring Boot + Spring Batch)
Phase A: 버그 수정 - isQueryCancelled: queryCancelFlags 전체 순회 → queryId 직접 조회 (O(n)→O(1)) 한 쿼리 취소 시 서버 전체 쿼리 조기 종료되던 치명적 버그 해결 - QueryContext 내부 클래스 추출: 싱글턴 인스턴스 변수 5개를 쿼리별 로컬로 전환 동시 쿼리 간 상태 교차 오염 원천 차단 - 대기열 타임아웃: 하드코딩 120초 → ActiveQueryManager 설정값 사용 Phase B: 쿼리 메트릭 DB 저장 - QueryMetricsService: signal.t_query_metrics 비동기 INSERT - QueryMetricsController: GET /api/monitoring/query-metrics, /stats - streamChunkedTracks finally 블록에서 자동 저장 (QueryBenchmark 데이터 연동) Phase C: N+1 해소 + 데드코드 제거 - VesselInfo 배치 프리로드: viewportVesselIds 수집 후 1회 배치 조회 - 미사용 코드 ~400줄 삭제: simplificationStrategy, executorService, processQueryInChunks, batchGetVesselInfo, processChunk, selectTableByTimeRange, groupRangesByDate 등 Phase D: 코드 품질 - WKTReader: 싱글턴 공유 → ThreadLocal (스레드 안전성) - avgSpeed 계산: 4곳 중복 → calculateAvgSpeed() 헬퍼 추출 2,984줄 → 2,575줄 (409줄 삭감) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| .gitea/workflows | ||
| .githooks | ||
| .mvn | ||
| deploy | ||
| docs | ||
| frontend | ||
| scripts | ||
| sql | ||
| src | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .sdkmanrc | ||
| CLAUDE.md | ||
| mvnw | ||
| mvnw.cmd | ||
| pom.xml | ||
| run-on-query-server-dev.sh | ||
| vessel-batch-control.sh | ||