snp-batch-validation/README.md

106 lines
2.8 KiB
Markdown
Raw Normal View 히스토리

# 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 자동 설치 스킵 |