From f92b00c7b6b69c11735bc48b8d3537089cd3aa83 Mon Sep 17 00:00:00 2001 From: EpicFn Date: Mon, 13 Oct 2025 14:24:24 +0900 Subject: [PATCH 1/5] =?UTF-8?q?fix=20:=20=ED=99=95=EC=9E=A5=EC=9E=90=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=ED=95=98=EA=B3=A0=20=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EB=B1=89=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/domain/space/space/service/SpaceService.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java b/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java index 3e164420..8110cf71 100644 --- a/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java +++ b/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java @@ -3,10 +3,12 @@ import jakarta.persistence.NoResultException; import jakarta.validation.constraints.NotBlank; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.hibernate.validator.constraints.Length; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; import org.springframework.web.multipart.MultipartFile; import org.tuna.zoopzoop.backend.domain.datasource.repository.DataSourceRepository; import org.tuna.zoopzoop.backend.domain.datasource.repository.TagRepository; @@ -18,6 +20,7 @@ import org.tuna.zoopzoop.backend.global.aws.S3Service; import org.tuna.zoopzoop.backend.global.clients.liveblocks.LiveblocksClient; +@Slf4j @Service @RequiredArgsConstructor public class SpaceService { @@ -174,9 +177,10 @@ public void updateSpaceThumbnail(Integer spaceId, Member requester, MultipartFil } try { - //String fileName = "space/" + spaceId + "/thumbnail/" + System.currentTimeMillis() + "_" + + //String fileName = "space-thumbnail/space_" + System.currentTimeMillis() + "_" + // S3 저장 시 파일 이름 고정 (덮어쓰기) - String fileName = "space-thumbnail/space_" + spaceId ; + String extension = StringUtils.getFilenameExtension(image.getOriginalFilename()); + String fileName = "space-thumbnail/space_" + spaceId + "." + extension; String baseImageUrl = s3Service.upload(image, fileName); // DB 용으로 현재 시간을 쿼리 파라미터에 추가 (캐시 무효화) @@ -186,6 +190,7 @@ public void updateSpaceThumbnail(Integer spaceId, Member requester, MultipartFil space.setThumbnailUrl(finalImageUrl); spaceRepository.save(space); } catch (Exception e) { + log.error("Space thumbnail upload failed: ", e); throw new RuntimeException("스페이스 썸네일 이미지 업로드에 실패했습니다."); } } From 8376d306319682c15e7074935708969d069e1795 Mon Sep 17 00:00:00 2001 From: EpicFn Date: Mon, 13 Oct 2025 14:31:42 +0900 Subject: [PATCH 2/5] =?UTF-8?q?fix=20:=20prefix=20=EB=A1=9C=20=EA=B5=AC?= =?UTF-8?q?=EB=B6=84=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/domain/space/space/service/SpaceService.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java b/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java index 8110cf71..25ceb149 100644 --- a/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java +++ b/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java @@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.hibernate.validator.constraints.Length; +import org.springframework.beans.factory.annotation.Value; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,6 +32,9 @@ public class SpaceService { private final TagRepository tagRepository; private final DataSourceRepository dataSourceRepository; + @Value("${aws.s3.prefix}") + private String s3Prefix; + // ======================== 스페이스 조회 ======================== // /** @@ -177,10 +181,10 @@ public void updateSpaceThumbnail(Integer spaceId, Member requester, MultipartFil } try { - //String fileName = "space-thumbnail/space_" + System.currentTimeMillis() + "_" + + //String fileName = "space-thumbnail/prefix/space_id.jpg"; // S3 저장 시 파일 이름 고정 (덮어쓰기) String extension = StringUtils.getFilenameExtension(image.getOriginalFilename()); - String fileName = "space-thumbnail/space_" + spaceId + "." + extension; + String fileName = "space-thumbnail/" + s3Prefix + "/space_" + spaceId + "." + extension; String baseImageUrl = s3Service.upload(image, fileName); // DB 용으로 현재 시간을 쿼리 파라미터에 추가 (캐시 무효화) From 1c0757ab8faec9d81a5bf60686ce54ca79e09760 Mon Sep 17 00:00:00 2001 From: EpicFn Date: Mon, 13 Oct 2025 14:36:07 +0900 Subject: [PATCH 3/5] =?UTF-8?q?fix=20:=20CI=20=EA=B3=BC=EC=A0=95=EC=97=90?= =?UTF-8?q?=20=EB=8D=94=EB=AF=B8=20prefix=20=EA=B0=92=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test-server-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-server-ci.yml b/.github/workflows/test-server-ci.yml index 36cb6d37..7bb707d2 100644 --- a/.github/workflows/test-server-ci.yml +++ b/.github/workflows/test-server-ci.yml @@ -90,6 +90,7 @@ jobs: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_S3_BUCKET_NAME: ${{ secrets.AWS_S3_BUCKET_NAME }} + AWS_S3_PREFIX: test/ SENTRY_DSN: ${{ secrets.SENTRY_DSN }} JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }} JWT_ACCESS_TOKEN_VALIDITY: ${{ secrets.JWT_ACCESS_TOKEN_VALIDITY }} From 71631576015df39907d9625472a49d3ca19557ca Mon Sep 17 00:00:00 2001 From: EpicFn Date: Mon, 13 Oct 2025 14:38:10 +0900 Subject: [PATCH 4/5] =?UTF-8?q?fix=20:=20=ED=99=98=EA=B2=BD=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EC=97=90=20prefix=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/domain/space/space/service/SpaceService.java | 2 +- src/main/resources/application.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java b/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java index 25ceb149..e0563e6e 100644 --- a/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java +++ b/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java @@ -32,7 +32,7 @@ public class SpaceService { private final TagRepository tagRepository; private final DataSourceRepository dataSourceRepository; - @Value("${aws.s3.prefix}") + @Value("${cloud.aws.s3.prefix}") private String s3Prefix; // ======================== 스페이스 조회 ======================== // diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4b012f4b..d6ef120c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -110,6 +110,7 @@ spring: bucket: ${AWS_S3_BUCKET_NAME} stack: auto: false + prefix: ${AWS_S3_PREFIX} #Spring doc 설정 springdoc: From a9c7e2a1ed718c8644bac30af50f57d02de72144 Mon Sep 17 00:00:00 2001 From: EpicFn Date: Mon, 13 Oct 2025 14:41:01 +0900 Subject: [PATCH 5/5] =?UTF-8?q?fix=20:=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/domain/space/space/service/SpaceService.java | 2 +- src/main/resources/application.yml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java b/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java index e0563e6e..cc9c464b 100644 --- a/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java +++ b/src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java @@ -32,7 +32,7 @@ public class SpaceService { private final TagRepository tagRepository; private final DataSourceRepository dataSourceRepository; - @Value("${cloud.aws.s3.prefix}") + @Value("${spring.cloud.aws.s3.prefix}") private String s3Prefix; // ======================== 스페이스 조회 ======================== // diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index d6ef120c..e6687ffd 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -108,9 +108,10 @@ spring: static: ap-northeast-2 s3: bucket: ${AWS_S3_BUCKET_NAME} + prefix: ${AWS_S3_PREFIX} stack: auto: false - prefix: ${AWS_S3_PREFIX} + #Spring doc 설정 springdoc: