|
1 | 1 | package com.ongil.backend.domain.review.service.prompter; |
2 | 2 |
|
| 3 | +import java.util.List; |
| 4 | + |
3 | 5 | import org.springframework.stereotype.Component; |
4 | 6 |
|
5 | 7 | import com.ongil.backend.domain.review.dto.request.AiReviewGenerateRequest; |
@@ -128,30 +130,38 @@ public String buildUserMessage(AiReviewGenerateRequest request) { |
128 | 130 | prompt.append("소재 평가: ").append(request.getMaterialAnswer().getDisplayName()).append("\n"); |
129 | 131 |
|
130 | 132 | if (!request.getMaterialFeatures().isEmpty()) { |
131 | | - prompt.append("선택한 소재 특징:\n"); |
132 | | - boolean hasThicknessAll = false; |
133 | | - |
134 | | - for (String feature : request.getMaterialFeatures()) { |
135 | | - if ("두께감:선택지전체".equals(feature)) { |
136 | | - hasThicknessAll = true; |
137 | | - continue; |
138 | | - } |
139 | | - prompt.append("- ").append(feature).append("\n"); |
140 | | - } |
141 | | - |
142 | | - prompt.append("\n[문장 생성 규칙]"); |
143 | | - prompt.append("\n1. 위 리스트에 나열된 각 특징마다 서로 다른 느낌의 '2문장씩'을 반드시 생성할 것."); |
| 133 | + boolean hasThicknessAll = request.getMaterialFeatures().contains("두께감:선택지전체"); |
| 134 | + List<String> otherFeatures = request.getMaterialFeatures().stream() |
| 135 | + .filter(f -> !"두께감:선택지전체".equals(f)) |
| 136 | + .toList(); |
144 | 137 |
|
145 | | - if (hasThicknessAll) { |
146 | | - prompt.append("\n[특수 지시] 두께감은 아래 3가지 상황에 맞춰 생성하되, 각 문장 사이를 '|' 기호로 구분할 것:\n"); |
| 138 | + // 두께감 전체 선택 단독인 경우 |
| 139 | + if (hasThicknessAll && otherFeatures.isEmpty()) { |
| 140 | + prompt.append("\n[특수 지시] 두께감만 선택됨. 아래 3가지 상황에 맞춰 각각 1문장씩 생성하되, '|' 기호로 구분할 것:\n"); |
147 | 141 | if (isPositive) { |
148 | 142 | prompt.append("1. 두꺼워서 따뜻함 | 2. 얇아서 시원함 | 3. 적당한 두께임\n"); |
149 | 143 | } else { |
150 | 144 | prompt.append("1. 소재가 너무 두꺼워서 답답함 | 2. 너무 얇아서 추운 느낌임 | 3. 두께가 애매해서 아쉬움\n"); |
151 | 145 | } |
| 146 | + } else { |
| 147 | + prompt.append("선택한 소재 특징:\n"); |
| 148 | + for (String feature : otherFeatures) { |
| 149 | + prompt.append("- ").append(feature).append("\n"); |
| 150 | + } |
| 151 | + |
| 152 | + prompt.append("\n[문장 생성 규칙]"); |
| 153 | + prompt.append("\n1. 위 리스트에 나열된 각 특징마다 서로 다른 느낌의 '2문장씩'을 반드시 생성할 것."); |
| 154 | + |
| 155 | + if (hasThicknessAll) { |
| 156 | + prompt.append("\n[특수 지시] 두께감은 아래 3가지 상황에 맞춰 생성하되, 각 문장 사이를 '|' 기호로 구분할 것:\n"); |
| 157 | + if (isPositive) { |
| 158 | + prompt.append("1. 두꺼워서 따뜻함 | 2. 얇아서 시원함 | 3. 적당한 두께임\n"); |
| 159 | + } else { |
| 160 | + prompt.append("1. 소재가 너무 두꺼워서 답답함 | 2. 너무 얇아서 추운 느낌임 | 3. 두께가 애매해서 아쉬움\n"); |
| 161 | + } |
| 162 | + } |
152 | 163 | } |
153 | | - } |
154 | | - else { |
| 164 | + } else { |
155 | 165 | prompt.append("\n[지시] 특정 소재 속성 언급 없이, 전반적으로 무난하고 평범하다는 인상의 서로 다른 '2문장'을 생성할 것.\n"); |
156 | 166 | } |
157 | 167 |
|
|
0 commit comments