From fd5b25b670eea082704c9b67e408483bf7a207c2 Mon Sep 17 00:00:00 2001 From: ssyoung02 Date: Fri, 23 Jan 2026 01:01:26 +0900 Subject: [PATCH 1/5] =?UTF-8?q?refactor=20(Challenge):=20=EC=B1=8C?= =?UTF-8?q?=EB=A6=B0=EC=A7=80=20=EB=A3=A8=ED=8B=B4=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?AI=20=ED=94=84=EB=A1=AC=ED=8F=AC=ED=8A=B8=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../prompt/ChallengePromptTemplate.java | 107 ++++++++++-------- 1 file changed, 57 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java b/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java index d179e03..e0e1642 100644 --- a/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java +++ b/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java @@ -8,56 +8,63 @@ @Component public class ChallengePromptTemplate { - private static final String CHALLENGE_RECOMMENDATION_TEMPLATE = """ - 당신은 피부 홈케어 및 셀프케어 ‘체리쉬’ 앱의 7일 챌린지 루틴을 만드는 전문가입니다. - 사용자가 선택한 카테고리: "{homecareContent}" - - 목표: 사용자가 하루 1번 ‘했음/안했음’으로 체크할 수 있는 루틴 6개를 만드세요. - 결과 문구에는 빈도(매일/일일/일주일/N회/N번/항상/매번)를 절대 쓰지 마세요. - - [절대 금지(하나라도 나오면 실패)] - - 점검/확인/체크/정리/세탁/버리기 등 ‘관리/사후처리’ 목적 행동 - - 공중위생·기본 생활 의무 수준의 행동(샤워/양치/손씻기 등) 절대 금지 - - 민간요법, 자연요법, 인터넷 카더라 및 DIY 레시피 형태의 루틴 제외 - - 전문 시술/의학적 관리처럼 보이거나 자극적·과도한 케어 - - 오타, 비표준어, 어색한 합성어, 실제 한국어에서 사용되지 않는 표현 금지 - - 외래어·영어·전문용어는 일반적인 한국어 표현으로 치환하여 작성합니다. - 예시: - - 엑스폴리에이션 → 각질 제거 제품 - - 덴탈 플로스 → 치실 - - 선스크린 → 선크림 - [작성 규칙] - - 각 루틴: 공백 포함 20자 이내 - - 루틴은 “뷰티/자기관리 효용”이 분명해야 합니다. - - 매일 반복 가능한 루틴만 작성 ("주 N회" 같은 주간 루틴 제외) - - 상식적이고 안전하며, 일반 사용자가 그대로 따라 해도 무리가 없는 수준이어야 합니다. - - 읽자마자 어떤 행동을 해야 하는지 떠올릴 수 있는 명확한 행동형 문장으로 작성합니다. - - [카테고리별 예시] - - 피부 컨디션: "세안 후 팩 하기", "매일 밤 모델링팩 하기", "손으로 얼굴 만지지 않기", "샤워 후 PDRN 마스크팩하기", "자기 전 페이스 괄사 마사지하기", "콜라겐 챙겨먹기" - - 생활습관: "일어나자마자 물 한 잔", "6시간 이상 자기", "오후 3시 이후 카페인 음료 피하기", "잠들기 30분 전 스마트폰 내려놓기", "12시 전에 눕기" - - 체형관리: "기상 직후 스트레칭 10분", "유산소 운동하기", "저녁 식사 후 야식 안 먹기", "계단으로 이동하기" - - 웰니스 • 마음챙김: "기상 직후 아침 명상", "일어나자마자 스마트폰 보지 않기", "자기 전 스트레칭", "자기 전 감사일기 3가지", "내일 기대되는 것 1가지 적기" - - [출력 전 자체 검수(필수)] - - 6개를 만든 뒤, 아래 금지 단어/패턴이 포함되면 문장을 수정하거나 교체하세요: - 1) 빈도: 매일, 일일, 일주일, N회, N번, 항상, 매번 - 2) 관리/사후처리: 점검, 확인, 체크, 정리, 세탁, 버리기 - - 검수 과정은 출력하지 말고, 최종 JSON만 출력하세요. - - 응답 형식(JSON만): - {{ - "routines": ["루틴1","루틴2","루틴3","루틴4","루틴5","루틴6"] - }} - """; + private static final String CHALLENGE_RECOMMENDATION_TEMPLATE = """ + 당신은 2030 세대에게 인기 있는 감각적인 뷰티/웰니스 앱 ‘체리쉬’의 콘텐츠 에디터이자 에스테틱 전문가입니다. + 사용자가 선택한 카테고리: "{homecareContent}" + + 목표: 사용자가 선택한 카테고리에 맞는 하루 1번 ‘했음/안했음’으로 체크할 수 있는 센스있고 구체적이며 실용적인 루틴 6개를 만드세요. + 결과 문구에는 빈도(매일/일일/일주일/N회/N번/항상/매번)를 절대 쓰지 마세요. + + [기획 기준] + - 실제 앱에 노출된다고 가정하고, 자연스럽고 감각적인 문장으로 작성합니다. + - 전체 톤은 과장 없이 차분하고, 믿을 수 있는 뷰티 앱의 안내 문구처럼 작성합니다. + - 뷰티 고관여자가 좋아할 만한 트렌디한 단어(괄사, 림프, 속건조, 결 정리, 순환 등)를 적절히 활용하세요. + + [절대 금지(하나라도 나오면 실패)] + - 점검/확인/체크/정리/세탁/버리기 등 ‘관리/사후처리’ 목적 행동 + - 공중위생·기본 생활 의무 수준의 행동(샤워/양치/손씻기 등) 절대 금지 + - 민간요법, 자연요법, 인터넷 카더라 및 DIY 레시피 형태의 루틴 제외 + - 전문 시술/의학적 관리처럼 보이거나 자극적·과도한 케어 + - 오타, 비표준어, 어색한 합성어, 실제 한국어에서 사용되지 않는 표현 금지 + - 외래어·영어·전문용어는 일반적인 한국어 표현으로 치환하여 작성합니다. + 예시: + - 엑스폴리에이션 → 각질 제거 제품 + - 덴탈 플로스 → 치실 + - 선스크린 → 선크림 + + [작성 규칙] + - 각 루틴: 공백 포함 20자 이내 + - 루틴은 “뷰티/자기관리 효용”이 분명해야 합니다. + - 매일 반복 가능한 루틴만 작성 ("주 N회" 같은 주간 루틴 제외) + - 상식적이고 안전하며, 일반 사용자가 그대로 따라 해도 무리가 없는 수준이어야 합니다. + - 읽자마자 어떤 행동을 해야 하는지 떠올릴 수 있는 명확한 행동형 문장으로 작성합니다. + - 모든 루틴 문장은 반드시 “~하기” 형태로 끝납니다. (다른 종결형 사용 금지) + + [카테고리 허용 범위 — 반드시 준수] + - 피부컨디션: 얼굴 피부에 직접 적용되는 홈케어만 허용 (단순 도포를 넘어 부위나 방법 지정 등 구체적 행동 포함) + - 생활습관: 수면, 카페인, 수분 섭취, 화면 사용 등 생활 리듬 행동만 허용 + - 체형관리: 스트레칭, 운동, 식사 조절 등 신체 활동만 허용 (부위별 자극이나 순환에 집중) + - 웰니스·마음챙김: 명상, 호흡, 기록 등 마음 관리 행동만 허용 + + [카테고리별 예시] + - 피부 컨디션: "토너 묻힌 솜으로 결 정돈하기", "자기 전 모델링팩 하기", "손으로 얼굴 만지지 않기", "샤워 후 PDRN 마스크팩하기", "자기 전 페이스 괄사 마사지하기" + - 생활습관: "일어나자마자 물 한 잔하기", "알람 소리 듣고 바로 일어나기", "베개 커버 위에 수건 깔기", "6시간 이상 자기", "오후 3시 이후 카페인 음료 피하기", "잠들기 30분 전 스마트폰 내려놓기", "12시 전에 눕기" + - 체형관리: "기상 직후 스트레칭 10분", "유산소 운동 30분하기", "저녁 식사 후 야식 안 먹기", "계단으로 이동하기", "다리 꼬지 않기", "림프 마사지 하기", "승모근 라인 꾹꾹 누르기" + - 웰니스 • 마음챙김: "기상 직후 아침 명상", "일어나자마자 스마트폰 보지 않기", "자기 전 감사일기 3가지", "내일 기대되는 것 1가지 적기", "눈 감고 1분간 깊게 호흡하기" + + 응답 형식(JSON만): + {{ + "routines": ["루틴1","루틴2","루틴3","루틴4","루틴5","루틴6"] + }} + """; - /** - * 챌린지 추천 프롬프트 템플릿 반환 - * - * @return 챌린지 추천용 프롬프트 템플릿 문자열 - */ - public String getChallengeRecommendationTemplate() { - return CHALLENGE_RECOMMENDATION_TEMPLATE; - } + /** + * 챌린지 추천 프롬프트 템플릿 반환 + * + * @return 챌린지 추천용 프롬프트 템플릿 문자열 + */ + public String getChallengeRecommendationTemplate() { + return CHALLENGE_RECOMMENDATION_TEMPLATE; + } } From 76d167a60f0544705ecd4b59b9644eca04aa4a41 Mon Sep 17 00:00:00 2001 From: ssyoung02 Date: Fri, 23 Jan 2026 01:17:15 +0900 Subject: [PATCH 2/5] =?UTF-8?q?refactor=20(Challenge):=20=EC=B1=8C?= =?UTF-8?q?=EB=A6=B0=EC=A7=80=20=EB=A3=A8=ED=8B=B4=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?AI=20=EB=AA=A8=EB=8D=B8=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-openai.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/application-openai.yaml b/src/main/resources/application-openai.yaml index 1f6496a..55db046 100644 --- a/src/main/resources/application-openai.yaml +++ b/src/main/resources/application-openai.yaml @@ -4,6 +4,6 @@ spring: api-key: ${OPENAI_API_KEY} chat: options: - model: ${OPENAI_MODEL:gpt-4.1-mini} + model: ${OPENAI_MODEL:gpt-5.1} temperature: ${OPENAI_TEMPERATURE:0.7} - max-tokens: ${OPENAI_MAX_TOKENS:500} + max-completion-tokens: ${OPENAI_MAX_COMPLETION_TOKENS:500} From 756842049cc9a2256691be76a76e1c588cf52620 Mon Sep 17 00:00:00 2001 From: ssyoung02 Date: Fri, 23 Jan 2026 01:38:19 +0900 Subject: [PATCH 3/5] =?UTF-8?q?refactor=20(Challenge):=20=EC=B1=8C?= =?UTF-8?q?=EB=A6=B0=EC=A7=80=20=EB=A3=A8=ED=8B=B4=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EA=B8=80=EC=9E=90=EC=88=98=20=EA=B2=80=EC=A6=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/prompt/ChallengePromptTemplate.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java b/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java index e0e1642..d372c81 100644 --- a/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java +++ b/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java @@ -14,6 +14,7 @@ public class ChallengePromptTemplate { 목표: 사용자가 선택한 카테고리에 맞는 하루 1번 ‘했음/안했음’으로 체크할 수 있는 센스있고 구체적이며 실용적인 루틴 6개를 만드세요. 결과 문구에는 빈도(매일/일일/일주일/N회/N번/항상/매번)를 절대 쓰지 마세요. + 각 루틴은 반드시 "공백 포함 17자 이내"로 작성하세요. (앱 UI 버튼에 들어가야 함) [기획 기준] - 실제 앱에 노출된다고 가정하고, 자연스럽고 감각적인 문장으로 작성합니다. @@ -33,7 +34,6 @@ public class ChallengePromptTemplate { - 선스크린 → 선크림 [작성 규칙] - - 각 루틴: 공백 포함 20자 이내 - 루틴은 “뷰티/자기관리 효용”이 분명해야 합니다. - 매일 반복 가능한 루틴만 작성 ("주 N회" 같은 주간 루틴 제외) - 상식적이고 안전하며, 일반 사용자가 그대로 따라 해도 무리가 없는 수준이어야 합니다. From fd59925ef726faed97303c85b24eb74154a34b66 Mon Sep 17 00:00:00 2001 From: ssyoung02 Date: Fri, 23 Jan 2026 01:39:18 +0900 Subject: [PATCH 4/5] =?UTF-8?q?refactor=20(Challenge):=20=EC=B1=8C?= =?UTF-8?q?=EB=A6=B0=EC=A7=80=20=EB=A3=A8=ED=8B=B4=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=ED=94=84=EB=A1=AC=ED=8F=AC=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/prompt/ChallengePromptTemplate.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java b/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java index d372c81..7411338 100644 --- a/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java +++ b/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java @@ -49,8 +49,8 @@ public class ChallengePromptTemplate { [카테고리별 예시] - 피부 컨디션: "토너 묻힌 솜으로 결 정돈하기", "자기 전 모델링팩 하기", "손으로 얼굴 만지지 않기", "샤워 후 PDRN 마스크팩하기", "자기 전 페이스 괄사 마사지하기" - 생활습관: "일어나자마자 물 한 잔하기", "알람 소리 듣고 바로 일어나기", "베개 커버 위에 수건 깔기", "6시간 이상 자기", "오후 3시 이후 카페인 음료 피하기", "잠들기 30분 전 스마트폰 내려놓기", "12시 전에 눕기" - - 체형관리: "기상 직후 스트레칭 10분", "유산소 운동 30분하기", "저녁 식사 후 야식 안 먹기", "계단으로 이동하기", "다리 꼬지 않기", "림프 마사지 하기", "승모근 라인 꾹꾹 누르기" - - 웰니스 • 마음챙김: "기상 직후 아침 명상", "일어나자마자 스마트폰 보지 않기", "자기 전 감사일기 3가지", "내일 기대되는 것 1가지 적기", "눈 감고 1분간 깊게 호흡하기" + - 체형관리: "기상 직후 스트레칭 10분하기", "유산소 운동 30분하기", "저녁 식사 후 야식 안 먹기", "계단으로 이동하기", "다리 꼬지 않기", "림프 마사지 하기", "승모근 라인 꾹꾹 누르기" + - 웰니스 • 마음챙김: "기상 직후 아침 명상하기", "일어나자마자 스마트폰 보지 않기", "자기 전 감사일기 3가지", "내일 기대되는 것 1가지 적기", "눈 감고 1분간 깊게 호흡하기" 응답 형식(JSON만): {{ From f722d92c1b64c523d77d880129d6cfb733ee7eb7 Mon Sep 17 00:00:00 2001 From: ssyoung02 Date: Fri, 23 Jan 2026 01:40:31 +0900 Subject: [PATCH 5/5] =?UTF-8?q?refactor=20(Challenge):=20=EC=B1=8C?= =?UTF-8?q?=EB=A6=B0=EC=A7=80=20=EB=A3=A8=ED=8B=B4=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=ED=94=84=EB=A1=AC=ED=8F=AC=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/prompt/ChallengePromptTemplate.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java b/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java index 7411338..46ac0a6 100644 --- a/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java +++ b/src/main/java/com/sopt/cherrish/domain/challenge/recommendation/infrastructure/prompt/ChallengePromptTemplate.java @@ -50,7 +50,7 @@ public class ChallengePromptTemplate { - 피부 컨디션: "토너 묻힌 솜으로 결 정돈하기", "자기 전 모델링팩 하기", "손으로 얼굴 만지지 않기", "샤워 후 PDRN 마스크팩하기", "자기 전 페이스 괄사 마사지하기" - 생활습관: "일어나자마자 물 한 잔하기", "알람 소리 듣고 바로 일어나기", "베개 커버 위에 수건 깔기", "6시간 이상 자기", "오후 3시 이후 카페인 음료 피하기", "잠들기 30분 전 스마트폰 내려놓기", "12시 전에 눕기" - 체형관리: "기상 직후 스트레칭 10분하기", "유산소 운동 30분하기", "저녁 식사 후 야식 안 먹기", "계단으로 이동하기", "다리 꼬지 않기", "림프 마사지 하기", "승모근 라인 꾹꾹 누르기" - - 웰니스 • 마음챙김: "기상 직후 아침 명상하기", "일어나자마자 스마트폰 보지 않기", "자기 전 감사일기 3가지", "내일 기대되는 것 1가지 적기", "눈 감고 1분간 깊게 호흡하기" + - 웰니스 • 마음챙김: "기상 직후 아침 명상하기", "일어나자마자 스마트폰 보지 않기", "자기 전 감사일기 3가지 적기", "내일 기대되는 것 1가지 적기", "눈 감고 1분간 깊게 호흡하기" 응답 형식(JSON만): {{