diff --git a/src/main/java/org/example/gather_back_end/domain/PromotionRequest.java b/src/main/java/org/example/gather_back_end/domain/PromotionRequest.java index 73eaf35..3a8a57a 100644 --- a/src/main/java/org/example/gather_back_end/domain/PromotionRequest.java +++ b/src/main/java/org/example/gather_back_end/domain/PromotionRequest.java @@ -16,7 +16,6 @@ import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; -import org.example.gather_back_end.promotion.dto.timeline.PromotionTimelineReq; import org.example.gather_back_end.util.entity.BaseEntity; // 홍보 요청 내역 diff --git a/src/main/java/org/example/gather_back_end/domain/WorkType.java b/src/main/java/org/example/gather_back_end/domain/WorkType.java index 0b7706b..354c062 100644 --- a/src/main/java/org/example/gather_back_end/domain/WorkType.java +++ b/src/main/java/org/example/gather_back_end/domain/WorkType.java @@ -10,8 +10,7 @@ public enum WorkType { PRINTS("PRINTS"), // 인쇄물 (포스터, 배너 등) VIDEO("VIDEO"), // 영상 (숏폼, 미드폼, 롱폼 등) - SNS_POST("SNS_POST"), // SNS 게시물 (카드뉴스, 피드 등) - ETC("ETC"); // 기타 + SNS_POST("SNS_POST"); // SNS 게시물 (카드뉴스, 피드 등) private String value; } diff --git a/src/main/java/org/example/gather_back_end/promotion/dto/cost/PromotionCostReq.java b/src/main/java/org/example/gather_back_end/promotion/dto/cost/PromotionCostReq.java index 267a1fb..e308118 100644 --- a/src/main/java/org/example/gather_back_end/promotion/dto/cost/PromotionCostReq.java +++ b/src/main/java/org/example/gather_back_end/promotion/dto/cost/PromotionCostReq.java @@ -9,10 +9,10 @@ public record PromotionCostReq( @Schema(description = "1순위 홍보 수단 (필수)", example = "PRINTS") String firstMeans, - @Schema(description = "2순위 홍보 수단 (null 가능)", example = "VIDEO") + @Schema(description = "2순위 홍보 수단 (빈 문자열 가능)", example = "VIDEO") String secondMeans, - @Schema(description = "3순위 홍보 수단 (null 가능)", example = "SNS_POST") + @Schema(description = "3순위 홍보 수단 (빈 문자열 가능)", example = "SNS_POST") String thirdMeans, @Schema(description = "인스타그램 홍보 기간", example = "20") diff --git a/src/main/java/org/example/gather_back_end/promotion/dto/timeline/PromotionTimelineReq.java b/src/main/java/org/example/gather_back_end/promotion/dto/timeline/PromotionTimelineReq.java index 52dc0a9..af8bd3b 100644 --- a/src/main/java/org/example/gather_back_end/promotion/dto/timeline/PromotionTimelineReq.java +++ b/src/main/java/org/example/gather_back_end/promotion/dto/timeline/PromotionTimelineReq.java @@ -25,12 +25,12 @@ public record PromotionTimelineReq( WorkType firstMeans, @Nullable - @Schema(description = "2순위 홍보 수단 (null 가능)", example = "SNS_POST") - WorkType secondMeans, + @Schema(description = "2순위 홍보 수단 (빈 문자열 가능)", example = "SNS_POST") + String secondMeans, @Nullable - @Schema(description = "3순위 홍보 수단 (null 가능)", example = "VIDEO") - WorkType thirdMeans + @Schema(description = "3순위 홍보 수단 (빈 문자열 가능)", example = "VIDEO") + String thirdMeans ) { public PromotionRequest toPromotionRequest(PromotionTimelineReq req, User user) { @@ -41,9 +41,14 @@ public PromotionRequest toPromotionRequest(PromotionTimelineReq req, User user) req.targetNumberOfPeople, req.budget, req.firstMeans, - req.secondMeans, - req.thirdMeans + parseWorkType(req.secondMeans), + parseWorkType(req.thirdMeans) ); } + // 빈 문자열("")에 대한 처리 + private WorkType parseWorkType(String means) { + return (means == null || means.isEmpty()) ? null : WorkType.valueOf(means); + } + } diff --git a/src/main/java/org/example/gather_back_end/util/constant/CostPrompt.java b/src/main/java/org/example/gather_back_end/util/constant/CostPrompt.java index b79a419..51b6f92 100644 --- a/src/main/java/org/example/gather_back_end/util/constant/CostPrompt.java +++ b/src/main/java/org/example/gather_back_end/util/constant/CostPrompt.java @@ -31,6 +31,9 @@ public class CostPrompt { SNS_POST // SNS 게시물 (카드뉴스, 피드 등) 홍보 수단은 무조건 1개 이상 작성되어 있습니다. + 홍보 수단에 대한 주의사항은 다음과 같습니다. + 값이 없는 경우에는 null이 아니라 빈 문자열("")로 오게 되어있습니다. + secondMeans, thirdMeans에 빈 문자열("")이 오면 해당 홍보 수단은 제외하고 응답해 주세요. 즉, null이라고 생각하면 편합니다. 그럼 아래와 같은 json 데이터 타입으로 응답을 해줘야 합니다. @@ -86,7 +89,7 @@ public class CostPrompt { "budget": 167000, "firstMeans": "VIDEO", "secondMeans": "SNS_POST", - "thirdMeans": null, + "thirdMeans": "", "instagramPromotionPeriod" : 7 } """; @@ -111,7 +114,7 @@ public class CostPrompt { "budget": 157000, "firstMeans": "PRINTS", "secondMeans": "SNS_POST", - "thirdMeans": null, + "thirdMeans": "", "instagramPromotionPeriod" : 10 } """; diff --git a/src/main/java/org/example/gather_back_end/util/constant/TimelinePrompt.java b/src/main/java/org/example/gather_back_end/util/constant/TimelinePrompt.java index 5e922ce..f1202ed 100644 --- a/src/main/java/org/example/gather_back_end/util/constant/TimelinePrompt.java +++ b/src/main/java/org/example/gather_back_end/util/constant/TimelinePrompt.java @@ -35,6 +35,9 @@ public class TimelinePrompt { SNS_POST // SNS 게시물 (카드뉴스, 피드 등) 홍보 수단은 무조건 1개 이상 작성되어 있습니다. + 홍보 수단에 대한 주의사항은 다음과 같습니다. + 값이 없는 경우에는 null이 아니라 빈 문자열("")로 오게 되어있습니다. + secondMeans, thirdMeans에 빈 문자열("")이 오면 해당 홍보 수단은 제외하고 응답해 주세요. 즉, null이라고 생각하면 편합니다. 그럼 아래와 같은 json 데이터 타입으로 응답을 해줘야 합니다. @@ -133,7 +136,7 @@ public class TimelinePrompt { "budget": 167000, "firstMeans": "VIDEO", "secondMeans": "SNS_POST", - "thirdMeans": null + "thirdMeans": "" } """; public static final String ASSISTANT2 = """ @@ -221,8 +224,8 @@ public class TimelinePrompt { "targetNumberOfPeople": 432, "budget": 157000, "firstMeans": "PRINTS", - "secondMeans": "SNS_POST", - "thirdMEans": null + "secondMeans": "", + "thirdMeans": "" } """; public static final String ASSISTANT3 = """ @@ -286,30 +289,6 @@ public class TimelinePrompt { "tip":"20대를 타겟으로 인스타그램 유행을 활용해 효율적으로 홍보하세요!" } ] - }, - { - "period":48, - "category":"SNS_POST", - "tasks":[ - { - "name":"내용 정리 및 컨택", - "start":0, - "end":2, - "tip":"단체의 키워드와 아이덴티티를 명확히 정리해, 디자이너와 최고의 결과물을 만들어보세요!" - }, - { - "name":"제작", - "start":2, - "end":9, - "tip":"담당자를 지정해 크리에이터와 빠르고 예의 있게 소통하세요!" - }, - { - "name":"게시_인스타그램", - "start":9, - "end":39, - "tip":"일 5000원 투자로 짧은 기간에 최대 효과로 더 많은 사람들에게 정보를 알리세요!" - } - ] } ] """;