diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..aa38f6d
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,57 @@
+
+
+ 4.0.0
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.2.5
+
+
+
+ com.acquirex
+ card-acquisition
+ 1.0.0-SNAPSHOT
+ card-acquisition
+ 카드 매입 승인 경로 - Spring Boot 3 Migration
+
+
+ 17
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ com.h2database
+ h2
+ runtime
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/acquirex/cardacquisition/CardAcquisitionApplication.java b/src/main/java/com/acquirex/cardacquisition/CardAcquisitionApplication.java
new file mode 100644
index 0000000..a262683
--- /dev/null
+++ b/src/main/java/com/acquirex/cardacquisition/CardAcquisitionApplication.java
@@ -0,0 +1,12 @@
+package com.acquirex.cardacquisition;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class CardAcquisitionApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(CardAcquisitionApplication.class, args);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/acquirex/cardacquisition/controller/AcquisitionApprovalController.java b/src/main/java/com/acquirex/cardacquisition/controller/AcquisitionApprovalController.java
new file mode 100644
index 0000000..2c7ecb8
--- /dev/null
+++ b/src/main/java/com/acquirex/cardacquisition/controller/AcquisitionApprovalController.java
@@ -0,0 +1,69 @@
+package com.acquirex.cardacquisition.controller;
+
+import com.acquirex.cardacquisition.dto.ApprovalDto.ApprovalRequest;
+import com.acquirex.cardacquisition.dto.ApprovalDto.ApprovalResponse;
+import com.acquirex.cardacquisition.service.AcquisitionApprovalService;
+import jakarta.validation.Valid;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api/v1/acquisitions")
+public class AcquisitionApprovalController {
+
+ private final AcquisitionApprovalService service;
+
+ public AcquisitionApprovalController(AcquisitionApprovalService service) {
+ this.service = service;
+ }
+
+ @PostMapping
+ public ResponseEntity requestApproval(@Valid @RequestBody ApprovalRequest request) {
+ return ResponseEntity.status(HttpStatus.CREATED).body(service.requestApproval(request));
+ }
+
+ @PostMapping("/{id}/approve")
+ public ResponseEntity approve(@PathVariable Long id) {
+ return ResponseEntity.ok(service.approve(id));
+ }
+
+ @PostMapping("/{id}/reject")
+ public ResponseEntity reject(@PathVariable Long id) {
+ return ResponseEntity.ok(service.reject(id));
+ }
+
+ @GetMapping("/{id}")
+ public ResponseEntity getApproval(@PathVariable Long id) {
+ return ResponseEntity.ok(service.getApproval(id));
+ }
+
+ @GetMapping("/pending")
+ public ResponseEntity> getPendingApprovals() {
+ return ResponseEntity.ok(service.getPendingApprovals());
+ }
+
+ @ExceptionHandler(IllegalArgumentException.class)
+ public ResponseEntity