해양 데이터 통합 배치 시스템 (Spring Batch + Quartz)
Go to file
htlee 41b06beeec fix: ChnPrmShip 캐시 갱신 조건 완화 및 스케줄 이전 실행 시간 표시
- ChnPrmShipCacheManager: isAfter → !isBefore (동일 타임스탬프도 갱신)
- ScheduleService: Quartz 트리거에서 previousFireTime 실제 조회
- README.md: 빌드/배포 가이드 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 09:49:08 +09:00
.claude fix: ChnPrmShip 캐시 갱신 조건 완화 및 스케줄 이전 실행 시간 표시 2026-02-19 09:49:08 +09:00
.githooks fix: ChnPrmShip 캐시 갱신 조건 완화 및 스케줄 이전 실행 시간 표시 2026-02-19 09:49:08 +09:00
.mvn feat: Gitea 팀 프로젝트 워크플로우 구조 적용 2026-02-14 22:00:24 +09:00
frontend feat: 배치 모니터링 React SPA 전환 및 10대 기능 강화 2026-02-17 12:53:54 +09:00
sql feat: 중국 허가선박 전용 API 및 DB Sync 동적 범위 개선 2026-02-16 11:14:18 +09:00
src/main fix: ChnPrmShip 캐시 갱신 조건 완화 및 스케줄 이전 실행 시간 표시 2026-02-19 09:49:08 +09:00
.editorconfig feat: Gitea 팀 프로젝트 워크플로우 구조 적용 2026-02-14 22:00:24 +09:00
.gitattributes Initial commit 2025-10-22 13:50:04 +09:00
.gitignore feat: 배치 모니터링 React SPA 전환 및 10대 기능 강화 2026-02-17 12:53:54 +09:00
.sdkmanrc feat: Gitea 팀 프로젝트 워크플로우 구조 적용 2026-02-14 22:00:24 +09:00
CLAUDE.md feat: Gitea 팀 프로젝트 워크플로우 구조 적용 2026-02-14 22:00:24 +09:00
pom.xml feat: 배치 모니터링 React SPA 전환 및 10대 기능 강화 2026-02-17 12:53:54 +09:00
README.md fix: ChnPrmShip 캐시 갱신 조건 완화 및 스케줄 이전 실행 시간 표시 2026-02-19 09:49:08 +09:00

SNP-Batch (snp-batch-validation)

해양 데이터 통합 배치 시스템. Maritime API에서 선박/항만/사건 데이터를 수집하여 PostgreSQL에 저장하고, AIS 실시간 위치정보를 캐시 기반으로 서비스합니다.

기술 스택

  • Java 17, Spring Boot 3.2.1, Spring Batch 5.1.0
  • PostgreSQL, Quartz Scheduler, Caffeine Cache
  • React 19 + Vite + Tailwind CSS 4 (관리 UI)
  • frontend-maven-plugin (프론트엔드 빌드 통합)

사전 요구사항

항목 버전 비고
JDK 17 .sdkmanrc 참조 (sdk env)
Maven 3.9+
Node.js 20+ 프론트엔드 빌드용
npm 10+ Node.js에 포함

빌드

주의: frontend-maven-plugin의 Node 호환성 문제로, 프론트엔드와 백엔드를 분리하여 빌드합니다.

터미널

# 1. 프론트엔드 빌드
cd frontend && npm install && npm run build && cd ..

# 2. Maven 패키징 (프론트엔드 빌드 스킵)
mvn clean package -DskipTests -Dskip.npm -Dskip.installnodenpm

빌드 결과: target/snp-batch-validation-1.0.0.jar

VSCode

Cmd+Shift+B (기본 빌드 태스크) → 프론트엔드 빌드 + Maven 패키징 순차 실행

개별 태스크: Cmd+Shift+P → "Tasks: Run Task" → 태스크 선택

태스크 설정: .vscode/tasks.json

IntelliJ IDEA

  1. 프론트엔드 빌드: Terminal 탭에서 cd frontend && npm run build
  2. Maven 패키징: Maven 패널 → Lifecycle → package
    • VM Options: -DskipTests -Dskip.npm -Dskip.installnodenpm
    • 또는 Run Configuration → Maven → Command line에 clean package -DskipTests -Dskip.npm -Dskip.installnodenpm

로컬 실행

터미널

mvn spring-boot:run -Dspring-boot.run.profiles=local

VSCode

Run/Debug 패널(F5) → "SNP-Batch (local)" 선택

실행 설정: .vscode/launch.json

IntelliJ IDEA

Run Configuration → Spring Boot:

  • Main class: com.snp.batch.SnpBatchApplication
  • Active profiles: local

서버 배포

# 1. 빌드 (위 빌드 절차 수행)

# 2. JAR 전송
scp target/snp-batch-validation-1.0.0.jar {서버}:{경로}/

# 3. 실행
java -jar snp-batch-validation-1.0.0.jar --spring.profiles.active=dev

접속 정보

항목 URL
관리 UI http://localhost:8041/snp-api/
Swagger http://localhost:8041/snp-api/swagger-ui/index.html

프로파일

프로파일 용도 DB
local 로컬 개발 개발 DB
dev 개발 서버 개발 DB
prod 운영 서버 운영 DB

Maven 빌드 플래그 요약

플래그 용도
-DskipTests 테스트 스킵
-Dskip.npm npm install/build 스킵
-Dskip.installnodenpm Node/npm 자동 설치 스킵