# 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 호환성 문제로, 프론트엔드와 백엔드를 분리하여 빌드합니다. ### 터미널 ```bash # 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](.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` ## 로컬 실행 ### 터미널 ```bash mvn spring-boot:run -Dspring-boot.run.profiles=local ``` ### VSCode Run/Debug 패널(F5) → "SNP-Batch (local)" 선택 > 실행 설정: [.vscode/launch.json](.vscode/launch.json) ### IntelliJ IDEA Run Configuration → Spring Boot: - Main class: `com.snp.batch.SnpBatchApplication` - Active profiles: `local` ## 서버 배포 ```bash # 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 자동 설치 스킵 |