Skip to content

Commit 7d9e165

Browse files
Merge pull request #172 from PerFumeOnMe/develop
[CI/CD] develop 작업 내용 main 반영
2 parents 31b37ea + a44c0d0 commit 7d9e165

17 files changed

Lines changed: 46 additions & 40 deletions

File tree

.github/workflows/dev_deploy.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: PerfumeonMe Dev CI/CD
22

33
on:
44
push:
5-
branches: [ "develop" ]
5+
branches: [ "main" ]
66
jobs:
77
deploy:
88
runs-on: ubuntu-latest
@@ -101,7 +101,7 @@ jobs:
101101
-e EXTERNAL_FASTAPI_PBTI_URL=${{ secrets.FASTAPI_PBTI_URL }} \
102102
-e IMAGE_KEYWORD_CHARACTER_BASE_PATH=${{ secrets.IMAGE_KEYWORD_CHARACTER_BASE_PATH }} \
103103
chanee29/perfumeonme
104-
104+
105105
106106
- name: Remove GitHub IP FROM security group
107107
run: |

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ GPT 기반 분석, 키워드 검색, 설문 등 다양한 방법을 통해 사
121121
└── 📁service
122122
└── 📁web
123123
└── 📁controller
124+
└── 📁docs
124125
└── 📁dto
125126
└── 📁common
126127
└── 📁base
@@ -140,6 +141,7 @@ GPT 기반 분석, 키워드 검색, 설문 등 다양한 방법을 통해 사
140141
└── 📁service
141142
└── 📁web
142143
└── 📁controller
144+
└── 📁docs
143145
└── 📁dto
144146
└── 📁external
145147
└── 📁fastapi
@@ -166,6 +168,7 @@ GPT 기반 분석, 키워드 검색, 설문 등 다양한 방법을 통해 사
166168
└── 📁validator
167169
└── 📁web
168170
└── 📁controller
171+
└── 📁docs
169172
└── 📁dto
170173
└── 📁imagekeyword
171174
└── 📁converter
@@ -189,12 +192,14 @@ GPT 기반 분석, 키워드 검색, 설문 등 다양한 방법을 통해 사
189192
└── 📁service
190193
└── 📁web
191194
└── 📁controller
195+
└── 📁docs
192196
└── 📁dto
193197
└── 📁s3file
194198
└── 📁aws
195199
└── 📁converter
196200
└── 📁web
197201
└── 📁controller
202+
└── 📁docs
198203
└── 📁dto
199204
└── 📁security
200205
└── 📁auth
@@ -227,6 +232,7 @@ GPT 기반 분석, 키워드 검색, 설문 등 다양한 방법을 통해 사
227232
└── 📁validator
228233
└── 📁web
229234
└── 📁controller
235+
└── 📁docs
230236
└── 📁dto
231237
└── 📁uuid
232238
└── 📁domain

src/main/java/PerfumeOnMe/spring/common/config/WebClientConfig.java

Lines changed: 0 additions & 14 deletions
This file was deleted.

src/main/java/PerfumeOnMe/spring/common/enums/Brand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
public enum Brand {
99
LOIVIE("로이비 (LOIVIE)"),
1010
DIPTYQUE("딥티크 (DIPTYQUE)"),
11-
JOMALONE("조 말론 (JOMALONE)"),
11+
JOMALONE("조말론 (JOMALONE)"),
1212
MAISON_MARGIELA("메종 마르지엘라 (MAISON MARGIELA)"),
1313
FREDERIC_MALLE("프레데릭 말 (FREDERIC MALLE)"),
1414
BYREDO("바이레도 (BYREDO)"),

src/main/java/PerfumeOnMe/spring/external/fastapi/dto/FastApiRecommendResponse.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,6 @@ public static class FragranceRecommendation {
2222
private String description;
2323
private List<String> relatedKeywords;
2424
private String imageUrl;
25+
private String removebgImageUrl;
2526
}
2627
}

src/main/java/PerfumeOnMe/spring/fragrance/service/FragranceServiceImpl.java

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import PerfumeOnMe.spring.user.repository.userFragrance.UserFragranceRepository;
3737
import PerfumeOnMe.spring.workshop.domain.Workshop;
3838
import PerfumeOnMe.spring.workshop.repository.WorkshopRepository;
39+
import PerfumeOnMe.spring.workshop.web.dto.WorkshopResponseDTO;
3940
import lombok.RequiredArgsConstructor;
4041

4142
@Service
@@ -257,25 +258,29 @@ public FragranceResponseDTO.FragranceMyPerfumeResult getFragranceMyPerfume(Custo
257258
return FragranceConverter.toMyPerfumeResult(true, myPerfumeList);
258259
}
259260

260-
/**recommendedFragranceJson 필드를 파싱하여 MyPerfume 리스트로 변환*/
261+
/**recommendedFragranceJson 필드를 파싱하여 MyPerfume 리스트로 변환 (메인페이지용 - 배경제거 이미지 우선 사용)*/
261262
private List<FragranceResponseDTO.MyPerfume> parseRecommendedFragranceJson(String jsonString) {
262263
try {
263264
if (jsonString == null || jsonString.trim().isEmpty()) {
264265
return List.of();
265266
}
266267

267-
// JSON 배열을 파싱하여 MyPerfume DTO로 변환
268-
TypeReference<List<FragranceResponseDTO.MyPerfume>> typeRef =
269-
new TypeReference<List<FragranceResponseDTO.MyPerfume>>() {
270-
};
271-
272-
List<FragranceResponseDTO.MyPerfume> perfumeList = objectMapper.readValue(jsonString, typeRef);
273-
274-
// null 체크 및 필수 필드 검증
275-
return perfumeList.stream()
276-
.filter(perfume -> perfume != null &&
277-
perfume.getBrand() != null &&
278-
perfume.getName() != null)
268+
// JSON 배열을 RecommendedFragranceDTO로 파싱
269+
TypeReference<List<WorkshopResponseDTO.RecommendedFragranceDTO>> typeRef =
270+
new TypeReference<>() {};
271+
272+
List<WorkshopResponseDTO.RecommendedFragranceDTO> fragranceList =
273+
objectMapper.readValue(jsonString, typeRef);
274+
275+
// MyPerfume으로 변환하면서 배경제거 이미지를 우선 사용
276+
return fragranceList.stream()
277+
.filter(f -> f != null && f.getBrand() != null && f.getName() != null)
278+
.map(f -> FragranceResponseDTO.MyPerfume.builder()
279+
.brand(f.getBrand())
280+
.name(f.getName())
281+
.removebgImageUrl(f.getRemovebgImageUrl() != null && !f.getRemovebgImageUrl().trim().isEmpty() ?
282+
f.getRemovebgImageUrl() : f.getImageUrl()) // 배경제거 이미지 우선, 없거나 빈값이면 원본
283+
.build())
279284
.collect(Collectors.toList());
280285

281286
} catch (Exception e) {
@@ -284,9 +289,7 @@ private List<FragranceResponseDTO.MyPerfume> parseRecommendedFragranceJson(Strin
284289
}
285290
}
286291

287-
/**
288-
* 사용자 ID로 사용자 조회 (공통 메서드)
289-
*/
292+
/** 사용자 ID로 사용자 조회 (공통 메서드) */
290293
private User findUserById(Long userId) {
291294
return userRepository.findById(userId)
292295
.orElseThrow(() -> new GeneralException(ErrorStatus.LOGIN_ID_NOT_FOUND));

src/main/java/PerfumeOnMe/spring/fragrance/web/dto/FragranceResponseDTO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public static class FragranceMyPerfumeResult {
141141
public static class MyPerfume {
142142
private String brand;
143143
private String name;
144-
private String imageUrl;
144+
private String removebgImageUrl;
145145
}
146146
}
147147

src/main/java/PerfumeOnMe/spring/imagekeyword/service/ImageKeywordPreviewService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public ImageKeywordPreviewResponseDTO generatePreview(Long userId, ImageKeywordP
6767
.description(f.getDescription())
6868
.relatedKeywords(f.getRelatedKeywords())
6969
.imageUrl(f.getImageUrl())
70+
.removebgImageUrl(f.getRemovebgImageUrl())
7071
.build()
7172
).collect(Collectors.toList());
7273

src/main/java/PerfumeOnMe/spring/imagekeyword/web/dto/ImageKeywordResponseDTO.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ public static class FragranceRecommendation {
6868
private String description;
6969
private List<String> relatedKeywords;
7070
private String imageUrl;
71+
private String removebgImageUrl;
7172
}
7273
}
7374

@@ -96,6 +97,7 @@ public static class FragranceRecommendation {
9697
private String description;
9798
private List<String> relatedKeywords;
9899
private String imageUrl;
100+
private String removebgImageUrl;
99101
}
100102
}
101103

src/main/java/PerfumeOnMe/spring/user/web/dto/UserRequestDTO.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ public static class Signup {
2828
@NotBlank
2929
@Schema(description = "사용자가 입력한 아이디", example = "umc123")
3030
@Pattern(
31-
regexp = "^[a-z0-9]+$",
32-
message = "영어 소문자와 숫자만 입력할 수 있으며, 공백 없이 1자 이상 입력해주세요."
31+
regexp = "^[a-z0-9]{1,17}$",
32+
message = "영어 소문자와 숫자만 입력할 수 있으며, 공백 없이 1자 이상 17자 이하로 입력해주세요."
3333
)
3434
private String loginId;
3535
@NotBlank

0 commit comments

Comments
 (0)