# Dabeeo Detection API > Dabeeo 변화 탐지 시스템을 위한 백엔드 API 서버 ## 📋 프로젝트 소개 **dabeeo-detection-api**는 공간 데이터의 변화를 탐지하고 관리하기 위한 RESTful API 서버입니다. JTS(Java Topology Suite)를 활용한 지오메트리 데이터 처리와 PostgreSQL을 통한 공간 데이터 저장을 지원합니다. ## 🛠️ 기술 스택 | Category | Technology | |----------|------------| | **Language** | Java 21 | | **Framework** | Spring Boot 3.5.7 | | **Database** | PostgreSQL (with PostGIS) | | **ORM** | Spring Data JPA + Hibernate | | **Query** | QueryDSL 5.0.0 (Jakarta) | | **Geospatial** | JTS (Java Topology Suite) + GeoJSON | | **Connection Pool** | HikariCP | | **Build Tool** | Gradle 8.x | | **Monitoring** | Spring Boot Actuator | | **Container** | Docker + Docker Compose | | **CI/CD** | Jenkins | ## 🚀 시작하기 ### 필수 요구사항 - Java 21 (JDK 21) - PostgreSQL 12+ (PostGIS 확장 필요) - Gradle 8.x (또는 Gradle Wrapper 사용) - Docker & Docker Compose (선택사항) ### 로컬 환경 설정 1. **저장소 클론** ``` https://kamco.git.gs.dabeeo.com/MVPTeam/DABEEO-DETECTION-APPLICATION.git ``` 2. **데이터베이스 설정** PostgreSQL 데이터베이스를 준비하고 `src/main/resources/application-local.yml`을 생성: ```yaml spring: config: activate: on-profile: local datasource: url: jdbc:postgresql://localhost:5432/dabeeo_detection_dev username: your_username password: your_password ``` > **참고**: `application-local.yml`은 `.gitignore`에 포함되어 있어 Git에 커밋되지 않습니다. 3. **빌드 및 실행** ```bash # 빌드 ./gradlew build # 실행 (local 프로파일) ./gradlew bootRun # 또는 JAR 파일로 실행 java -jar build/libs/ROOT.jar ``` 서버가 시작되면 http://localhost:8080 에서 접근 가능합니다. ## ⚙️ 프로파일 설정 애플리케이션은 환경별로 다른 설정을 사용합니다: | 프로파일 | 환경 | 포트 | 설정 파일 | |---------|------|------|-----------| | `local` | 로컬 개발 | 8080 | `application.yml` (기본) | | `dev` | 개발 서버 | 7100 | `application-dev.yml` | | `prod` | 운영 서버 | 8080 | `application-prod.yml` | ### 프로파일 활성화 ```bash # 개발 환경으로 실행 ./gradlew bootRun --args='--spring.profiles.active=dev' # JAR 실행 시 java -jar build/libs/ROOT.jar --spring.profiles.active=dev ``` ## 🧪 테스트 ```bash # 전체 테스트 실행 ./gradlew test # 특정 테스트 클래스 실행 ./gradlew test --tests com.kamco.cd.kamcoback.KamcoBackApplicationTests # 테스트 리포트 확인 open build/reports/tests/test/index.html ``` ## 📦 빌드 ```bash # 전체 빌드 (테스트 포함) ./gradlew clean build # 테스트 제외 빌드 (CI/CD에서 사용) ./gradlew clean build -x test # JAR 파일만 생성 ./gradlew bootJar ``` 빌드된 JAR 파일: `build/libs/ROOT.jar`