해양 데이터 통합 배치 시스템
Go to file
HYOJIN de3b27e504 docs: 릴리즈 노트 정리 (2026-03-25)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 17:01:40 +09:00
.claude style(ui): 프론트엔드 title 변경 (frontend → S&P 배치 관리) 2026-03-23 17:29:34 +09:00
.gitea/workflows fix(deploy): container 환경 Node.js 미지원으로 checkout 방식 복원 2026-03-25 09:40:55 +09:00
.githooks chore(workflow): 팀 글로벌 워크플로우 1.5.0 동기화 2026-03-03 18:16:54 +09:00
.mvn feat: Gitea 팀 프로젝트 워크플로우 구조 적용 2026-02-14 22:00:24 +09:00
docs docs: 릴리즈 노트 정리 (2026-03-25) 2026-03-25 17:01:40 +09:00
frontend refactor: AIS 수집 및 서비스 API 제거 (#99) 2026-03-25 16:55:11 +09:00
src/main refactor: AIS 수집 및 서비스 API 제거 (#99) 2026-03-25 16:55:11 +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: 재수집 실패 건 수 표시 2026-02-27 10:57:33 +09:00
.sdkmanrc feat: Gitea 팀 프로젝트 워크플로우 구조 적용 2026-02-14 22:00:24 +09:00
CLAUDE.md feat: 스키마명 변경 (t_std_snp_data → std_snp_data, t_std_snp_svc → std_snp_svc) 2026-03-05 11:09:56 +09:00
package-lock.json fix: 재수집 관리 및 이력 추가 (#4) 2026-02-20 11:03:36 +09:00
pom.xml refactor: AIS 수집 및 서비스 API 제거 (#99) 2026-03-25 16:55:11 +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 자동 설치 스킵