경량 API 게이트웨이/백엔드 서비스로, 구매·발주·입고 관련 엔드포인트를 제공하고 Swagger 문서, Actuator 헬스체크, Redis 캐시, Kafka 연동을 지원합니다.
- 런타임: Spring Boot 3 (Java 17)
- 빌드: Gradle
- 기본 컨텍스트 경로:
/api(application.yml 참고) - 주요 의존성: Web, Security, Validation, Actuator, Springdoc, Redis, JPA, Kafka
- 메인 클래스:
src/main/java/org/ever/_4ever_be_gw/Application.java:1 - 설정:
application.yml:1
- 발주서 목록/상세 조회, 승인/반려 처리
- 입고 대기/입고 완료 발주 조회
- 공급업체 목록/등록
- Swagger UI, OpenAPI 문서, Actuator 헬스·메트릭
- JDK 17 이상
- Gradle Wrapper 사용 권장 (
./gradlew) - (선택) Redis, Kafka
- 개발 실행:
./gradlew bootRun - 빌드:
./gradlew build
- JAR 생성:
./gradlew bootJar - 실행:
java -jar build/libs/*.jar
- 빌드:
docker build -t 4ever-gw . - 실행 예시:
docker run --rm -p 8080:8080 \ -e SPRING_KAFKA_BOOTSTRAP_SERVERS=localhost:9092 \ -e SPRING_REDIS_HOST=localhost \ -e SPRING_REDIS_PORT=6379 \ --name 4ever-gw 4ever-gw
SERVER_PORT(기본 8080)SPRING_KAFKA_BOOTSTRAP_SERVERS(기본localhost:9092)SPRING_REDIS_HOST(기본localhost)SPRING_REDIS_PORT(기본6379)SPRING_REDIS_PASSWORD(기본 빈 값)- Swagger/Actuator 경로 등은
application.yml:1참조
- 발주서 목록:
GET /purchase-orders- 상태 필터:
PENDING|APPROVED|REJECTED|DELIVERED - 구현:
src/main/java/org/ever/_4ever_be_gw/scmpp/controller/MmController.java:900
- 상태 필터:
- 발주서 상세:
GET /purchase-orders/{purchaseId}- 구현:
src/main/java/org/ever/_4ever_be_gw/scmpp/controller/MmController.java:1095
- 구현:
- 발주서 승인:
POST /purchase-orders/{poId}/approve- 구현:
src/main/java/org/ever/_4ever_be_gw/scmpp/controller/MmController.java:1455
- 구현:
- 발주서 반려:
POST /purchase-orders/{poId}/reject- 구현:
src/main/java/org/ever/_4ever_be_gw/scmpp/controller/MmController.java:1544
- 구현:
- 입고 완료 목록:
GET /purchase-orders/received- 구현:
src/main/java/org/ever/_4ever_be_gw/scmpp/controller/InventoryController.java:1004
- 구현:
- 입고 대기 목록:
GET /purchase-orders/pending- 구현:
src/main/java/org/ever/_4ever_be_gw/scmpp/controller/InventoryController.java:1059
- 구현:
- 공급업체 목록:
GET /vendors- 구현:
src/main/java/org/ever/_4ever_be_gw/scmpp/controller/MmController.java:1160
- 구현:
예시 호출
- 발주서 목록:
curl 'http://localhost:8080/api/purchase-orders?status=PENDING' - 발주서 승인:
curl -X POST 'http://localhost:8080/api/purchase-orders/1002/approve' -H 'Authorization: Bearer PO_APPROVER'
- 일부 쓰기/승인 API는
Authorization헤더에 특정 권한 토큰을 요구합니다.- 예: 승인/반려는
PO_APPROVER,PURCHASING_MANAGER,ADMIN중 하나 필요 - 로직 예시는
MmController승인/반려 핸들러 참고
- 예: 승인/반려는
- Actuator:
/actuator(health, info, metrics, prometheus 노출) - Swagger UI:
/swagger-ui.html - OpenAPI 문서:
/v3/api-docs
- 테스트 실행:
./gradlew test - 코드 스타일: Java 17, Lombok 사용, Validation 예외는 공통 에러 코드를 통해 응답
- DB: H2/PostgreSQL 의존성 포함. 현재 컨트롤러는 목업 데이터 기반 응답이 다수입니다.
- 애플리케이션:
src/main/java/org/ever/_4ever_be_gw/Application.java:1 - 컨트롤러:
src/main/java/org/ever/_4ever_be_gw/scmpp/controller/ - DTO:
src/main/java/org/ever/_4ever_be_gw/scmpp/dto/ - 설정:
application.yml:1,build.gradle:1,Dockerfile:1