mirror of
https://github.com/won-ktds/smarketing-backend.git
synced 2026-01-21 19:16:23 +00:00
fix: build
This commit is contained in:
parent
70ea983da4
commit
4c5cfcbbc7
@ -17,12 +17,4 @@ public interface AiPosterGenerator {
|
|||||||
* @return 생성된 포스터 이미지 URL
|
* @return 생성된 포스터 이미지 URL
|
||||||
*/
|
*/
|
||||||
String generatePoster(PosterContentCreateRequest request);
|
String generatePoster(PosterContentCreateRequest request);
|
||||||
|
|
||||||
/**
|
|
||||||
* 다양한 사이즈의 포스터 생성
|
|
||||||
*
|
|
||||||
* @param baseImage 기본 이미지
|
|
||||||
* @return 사이즈별 포스터 URL 맵
|
|
||||||
*/
|
|
||||||
Map<String, String> generatePosterSizes(String baseImage);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import com.won.smarketing.content.domain.service.AiPosterGenerator; // 도메인
|
|||||||
import com.won.smarketing.content.presentation.dto.PosterContentCreateRequest;
|
import com.won.smarketing.content.presentation.dto.PosterContentCreateRequest;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.web.reactive.function.client.WebClient;
|
import org.springframework.web.reactive.function.client.WebClient;
|
||||||
|
|
||||||
@ -23,7 +24,7 @@ public class PythonAiPosterGenerator implements AiPosterGenerator {
|
|||||||
|
|
||||||
private final WebClient webClient;
|
private final WebClient webClient;
|
||||||
|
|
||||||
@Value("${external.ai-service.base-url:http://20.249.139.88:5001}")
|
@Value("${external.ai-service.base-url}")
|
||||||
private String aiServiceBaseUrl;
|
private String aiServiceBaseUrl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -69,22 +70,10 @@ public class PythonAiPosterGenerator implements AiPosterGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 다양한 사이즈의 포스터 생성 (사용하지 않음)
|
|
||||||
* 1개의 이미지만 생성하므로 빈 맵 반환
|
|
||||||
*
|
|
||||||
* @param baseImage 기본 이미지 URL
|
|
||||||
* @return 빈 맵
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Map<String, String> generatePosterSizes(String baseImage) {
|
|
||||||
log.info("포스터 사이즈 변환 기능은 사용하지 않음: baseImage={}", baseImage);
|
|
||||||
return new HashMap<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Python AI 서비스 요청 데이터 구성
|
* Python AI 서비스 요청 데이터 구성
|
||||||
* Python 서비스의 PosterContentGetRequest 모델에 맞춤
|
* Python 서비스의 PosterContentGetRequest 모델에 맞춤
|
||||||
|
* 카테고리,
|
||||||
*/
|
*/
|
||||||
private Map<String, Object> buildRequestBody(PosterContentCreateRequest request) {
|
private Map<String, Object> buildRequestBody(PosterContentCreateRequest request) {
|
||||||
Map<String, Object> requestBody = new HashMap<>();
|
Map<String, Object> requestBody = new HashMap<>();
|
||||||
@ -92,7 +81,6 @@ public class PythonAiPosterGenerator implements AiPosterGenerator {
|
|||||||
// 기본 정보
|
// 기본 정보
|
||||||
requestBody.put("title", request.getTitle());
|
requestBody.put("title", request.getTitle());
|
||||||
requestBody.put("category", request.getCategory());
|
requestBody.put("category", request.getCategory());
|
||||||
requestBody.put("contentType", request.getContentType());
|
|
||||||
|
|
||||||
// 이미지 정보
|
// 이미지 정보
|
||||||
if (request.getImages() != null && !request.getImages().isEmpty()) {
|
if (request.getImages() != null && !request.getImages().isEmpty()) {
|
||||||
@ -109,16 +97,6 @@ public class PythonAiPosterGenerator implements AiPosterGenerator {
|
|||||||
requestBody.put("requirement", request.getRequirement());
|
requestBody.put("requirement", request.getRequirement());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 톤앤매너
|
|
||||||
if (request.getToneAndManner() != null) {
|
|
||||||
requestBody.put("toneAndManner", request.getToneAndManner());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 감정 강도
|
|
||||||
if (request.getEmotionIntensity() != null) {
|
|
||||||
requestBody.put("emotionIntensity", request.getEmotionIntensity());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 메뉴명
|
// 메뉴명
|
||||||
if (request.getMenuName() != null) {
|
if (request.getMenuName() != null) {
|
||||||
requestBody.put("menuName", request.getMenuName());
|
requestBody.put("menuName", request.getMenuName());
|
||||||
@ -129,11 +107,6 @@ public class PythonAiPosterGenerator implements AiPosterGenerator {
|
|||||||
requestBody.put("eventName", request.getEventName());
|
requestBody.put("eventName", request.getEventName());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 날짜 정보 (LocalDate를 String으로 변환)
|
|
||||||
if (request.getStartDate() != null) {
|
|
||||||
requestBody.put("startDate", request.getStartDate().format(DateTimeFormatter.ISO_LOCAL_DATE));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (request.getEndDate() != null) {
|
if (request.getEndDate() != null) {
|
||||||
requestBody.put("endDate", request.getEndDate().format(DateTimeFormatter.ISO_LOCAL_DATE));
|
requestBody.put("endDate", request.getEndDate().format(DateTimeFormatter.ISO_LOCAL_DATE));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,33 +41,26 @@ public class PosterContentCreateRequest {
|
|||||||
@NotNull(message = "홍보 종료일은 필수입니다")
|
@NotNull(message = "홍보 종료일은 필수입니다")
|
||||||
private LocalDateTime promotionEndDate;
|
private LocalDateTime promotionEndDate;
|
||||||
|
|
||||||
|
@Schema(description = "메뉴명 (메뉴 홍보시)", example = "카페라떼")
|
||||||
|
private String menuName;
|
||||||
|
|
||||||
@Schema(description = "이벤트명 (이벤트 홍보시)", example = "신메뉴 출시 이벤트")
|
@Schema(description = "이벤트명 (이벤트 홍보시)", example = "신메뉴 출시 이벤트")
|
||||||
private String eventName;
|
private String eventName;
|
||||||
|
|
||||||
@Schema(description = "이미지 스타일", example = "모던")
|
@Schema(description = "이미지 스타일", example = "모던")
|
||||||
private String imageStyle;
|
private String imageStyle;
|
||||||
|
|
||||||
@Schema(description = "프로모션 유형", example = "할인 정보")
|
|
||||||
private String promotionType;
|
|
||||||
|
|
||||||
@Schema(description = "감정 강도", example = "보통")
|
|
||||||
private String emotionIntensity;
|
|
||||||
|
|
||||||
@Schema(description = "업로드된 이미지 URL 목록", required = true)
|
@Schema(description = "업로드된 이미지 URL 목록", required = true)
|
||||||
@NotNull(message = "이미지는 1개 이상 필수입니다")
|
@NotNull(message = "이미지는 1개 이상 필수입니다")
|
||||||
@Size(min = 1, message = "이미지는 1개 이상 업로드해야 합니다")
|
@Size(min = 1, message = "이미지는 1개 이상 업로드해야 합니다")
|
||||||
private List<String> images;
|
private List<String> images;
|
||||||
|
|
||||||
// CreationConditions에 필요한 필드들
|
|
||||||
@Schema(description = "콘텐츠 카테고리", example = "이벤트")
|
@Schema(description = "콘텐츠 카테고리", example = "이벤트")
|
||||||
private String category;
|
private String category;
|
||||||
|
|
||||||
@Schema(description = "구체적인 요구사항", example = "신메뉴 출시 이벤트 포스터를 만들어주세요")
|
@Schema(description = "구체적인 요구사항", example = "신메뉴 출시 이벤트 포스터를 만들어주세요")
|
||||||
private String requirement;
|
private String requirement;
|
||||||
|
|
||||||
@Schema(description = "톤앤매너", example = "전문적")
|
|
||||||
private String toneAndManner;
|
|
||||||
|
|
||||||
@Schema(description = "이벤트 시작일", example = "2024-01-15")
|
@Schema(description = "이벤트 시작일", example = "2024-01-15")
|
||||||
private LocalDate startDate;
|
private LocalDate startDate;
|
||||||
|
|
||||||
@ -76,4 +69,5 @@ public class PosterContentCreateRequest {
|
|||||||
|
|
||||||
@Schema(description = "사진 스타일", example = "밝고 화사한")
|
@Schema(description = "사진 스타일", example = "밝고 화사한")
|
||||||
private String photoStyle;
|
private String photoStyle;
|
||||||
|
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user