Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hotfix: 사용자 목표 추천 api 수정 #255

Merged
merged 3 commits into from
Dec 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,8 @@ dependencies {
implementation 'com.google.firebase:firebase-admin:9.2.0'

//Jackson Data binding
implementation 'com.fasterxml.jackson.core:jackson-databind:2.16.1'
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.16.1'
implementation 'com.fasterxml.jackson.core:jackson-core:2.16.1'
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,6 @@ public RecommendQuestListResponseDto recommendQuest(Long memberId) {
othersVector.stream().flatMap(vector -> vector.goals().stream()).toList()),
"format",
format));
log.info("response is {}", response);
return converter.convert(response);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.util.Optional;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.groom.orbit.goal.dao.GoalRepository;
Expand All @@ -18,6 +19,7 @@ public class GoalCommandService {

private final GoalRepository goalRepository;

@Transactional(propagation = Propagation.REQUIRES_NEW)
public Goal createGoal(String title, String category) {
Goal goal = Goal.create(title, category);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ public class GoalRecommendService {

public GetRecommendGoalListResponseDto createRecommendGoal(Long memberId) {
RecommendGoalListResponseDto dtos = aiService.recommendGoal(memberId);
dtos.items().forEach(dto -> goalCommandService.upsert(dto.title(), dto.category()));
List<Goal> newGoals =
dtos.items().stream()
.map(dto -> goalCommandService.upsert(dto.title(), dto.category()))
Expand Down
35 changes: 18 additions & 17 deletions src/main/resources/templates/goal-recommend-prompt.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,15 @@

# 조건
## 조건1
각 목표의 카테고리(goalCategory)는 다음과 같습니다.
- 자격·어학·수상
- 경험·활동·교육
- 경력
- 기타
각 목표의 카테고리(category)는 다음과 같습니다.
- CERTIFICATION
- EXPERIENCE
- CAREER
- ETC

제시해주시는 목표는 goalCategory 중 하나의 카테고리에 포함되어야 합니다.
제시해주시는 목표와 goalCategory는 연관성이 있어야 합니다.
제시해주시는 목표는 반드시 category 중 하나의 카테고리에 포함되어야 합니다.
제시해주시는 목표와 category 연관성이 있어야 합니다.
category null이 아닌지 다시 한 번 확인해주세요.

## 조건2
새로운 목표의 종결 어미는 "~하기"여야 합니다.
Expand All @@ -33,26 +34,26 @@
- input
- "myGoal": ["SpringMVC 공부하기", "DDD 개념 이해하기", "클린 아키텍처 구현해보기"]
- output
- "title": "EDA에 대해 공부해보기", "goalCategory": "경험·활동·교육", "descriptions": ["다양한 IT 기업에 지원할 수 있어요", "분산 아키텍처에 대한 이해도를 높일 수 있어요"]
- "title": "SpringCloud 공부해보기", "goalCategory": "경험·활동·교육", "descriptions": ["scale out 가능한 아키텍처에 대해 공부해볼 수 있어요", "분산 아키텍처를 직접 만들어보며 이해도를 높일 수 있어요"]
- "title": "AWS를 이용해 EDA를 적용하기", "goalCategory": "경력", "descriptions": ["로컬 환경에서 벗어나 배포 환경을 분산 아키텍처로 구성해볼 수 있어요", "IT 기업에 지원할 때 우대 받을 수 있어요"]
- "title": "EDA에 대해 공부해보기", "category": "EXPERIENCE", "descriptions": ["다양한 IT 기업에 지원할 수 있어요", "분산 아키텍처에 대한 이해도를 높일 수 있어요"]
- "title": "SpringCloud 공부해보기", "category": "EXPERIENCE", "descriptions": ["scale out 가능한 아키텍처에 대해 공부해볼 수 있어요", "분산 아키텍처를 직접 만들어보며 이해도를 높일 수 있어요"]
- "title": "AWS를 이용해 EDA를 적용하기", "category": "CAREER", "descriptions": ["로컬 환경에서 벗어나 배포 환경을 분산 아키텍처로 구성해볼 수 있어요", "IT 기업에 지원할 때 우대 받을 수 있어요"]

2)
- input
- "myGoal": ["미적분학 A+받기", "선형대수학 A+받기", "과탑하기"]
- output
- "title": "해석학 공부해보기", "goalCategory": "경험·활동·교육", "descriptions": ["다양한 수학 분야를 경험해볼 수 있어요", "앞서 배운 내용을 응용해 대학 수학에 대한 이해도를 높일 수 있어요"]
- "title": "수학 경시대회 나가서 수상해보기", "goalCategory": "자격·어학·수상", "descriptions": ["관련 직무에 지원할 때 우대를 받을 수 있어요", "공부한 실력을 검증해볼 수 있어요"]
- "title": "수학과 취업 시장 조사하기", "goalCategory": "경력", "descriptions": ["졸업 후 취업 시장에 대한 식견을 넓힐 수 있어요", "기업들이 원하는 역량을 준비할 수 있어요", "수학의 다양한 응용분야에 대해 알 수 있어요"]
- "title": "해석학 공부해보기", "category": "EXPERIENCE", "descriptions": ["다양한 수학 분야를 경험해볼 수 있어요", "앞서 배운 내용을 응용해 대학 수학에 대한 이해도를 높일 수 있어요"]
- "title": "수학 경시대회 나가서 수상해보기", "category": "CERTIFICATION", "descriptions": ["관련 직무에 지원할 때 우대를 받을 수 있어요", "공부한 실력을 검증해볼 수 있어요"]
- "title": "수학과 취업 시장 조사하기", "category": "CAREER", "descriptions": ["졸업 후 취업 시장에 대한 식견을 넓힐 수 있어요", "기업들이 원하는 역량을 준비할 수 있어요", "수학의 다양한 응용분야에 대해 알 수 있어요"]

3)
- input
- "myGoal": ["JLPT 5급 합격하기", "JLPT 4급 합격하기", "매일 일본어 단어 정리하기"]
- output
- "title": "JLPT 3급 합격하기", "goalCategory": "자격·어학·수상", "descriptions": ["일본 사람과 일상적인 대화를 주고 받을 수 있어요", "일상생활에서 사용하는 한자를 읽고 듣는 능력을 기를 수 있어요", "JLPT 2급을 준비할 수 있는 기초 능력을 기를 수 있어요"]
- "title": "교내 일본어 동아리 가입하기", "goalCategory": "경험·활동·교육", "descriptions": ["관심사가 비슷한 사람들과 함께 공부하며 배운 내용을 적용해볼 수 있어요", "일본어 어학 관련 기업에 지원할 때 우대 받을 수 있어요"]
- "title": "일본어 어학연수 알아보기", "goalCategory": "경험·활동·교육", "descriptions": ["일본 현지인들과 함께 생활해보는 경험을 할 수 있어요", "일본 대학에서 일본어를 배우는 경험을 할 수 있어요"]
- "title": "일본 워킹홀리데이 조사하기", "goalCategory": "경험·활동·교육", "descriptions": ["일본 현지인들과 함께 생활해보는 경험을 할 수 있어요", "일본어 어학 관련 기업에 지원할 때 우대 받을 수 있어요"]
- "title": "JLPT 3급 합격하기", "category": "자격·어학·수상", "descriptions": ["일본 사람과 일상적인 대화를 주고 받을 수 있어요", "일상생활에서 사용하는 한자를 읽고 듣는 능력을 기를 수 있어요", "JLPT 2급을 준비할 수 있는 기초 능력을 기를 수 있어요"]
- "title": "교내 일본어 동아리 가입하기", "category": "EXPERIENCE", "descriptions": ["관심사가 비슷한 사람들과 함께 공부하며 배운 내용을 적용해볼 수 있어요", "일본어 어학 관련 기업에 지원할 때 우대 받을 수 있어요"]
- "title": "일본어 어학연수 알아보기", "category": "EXPERIENCE", "descriptions": ["일본 현지인들과 함께 생활해보는 경험을 할 수 있어요", "일본 대학에서 일본어를 배우는 경험을 할 수 있어요"]
- "title": "일본 워킹홀리데이 조사하기", "category": "EXPERIENCE", "descriptions": ["일본 현지인들과 함께 생활해보는 경험을 할 수 있어요", "일본어 어학 관련 기업에 지원할 때 우대 받을 수 있어요"]

# 응답 포맷
{format}
9 changes: 7 additions & 2 deletions src/main/resources/templates/quest-recommend-prompt.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
저의 관심 직무는 {job}입니다. 저의 목표는 {goal}입니다.

- {myQuest}는 제가 여태까지 작성했던 목표입니다.
- {questList}에 포함된 퀘스트 중 제가 아직 수행하지 않은 퀘스트를 선택하려고 합니다.
- {questList}에 포함된 퀘스트 중 제가 아직 수행하지 않은 퀘스트을(를) 선택하려고 합니다.
- {questList}에 포함된 퀘스트 중 저의 직무, 목표와 관련성이 가장 높은 퀘스트를 *세 개* 선택해주세요.
- {questList}에서 선택한 퀘스트가 {job}, {goal}과 관련이 있는지 판단해주세요.
- 만약 선택된 퀘스트가 {job} 또는 {goal} 과 관련이 없다면, {job}과 {goal}, {myQuest}을 기준으로 새로운 퀘스트를 만들어주세요.
Expand Down Expand Up @@ -41,7 +41,12 @@

# 조건
- 답변하기 전에 한 번 더 검토를 하고 {questList}에서 선택한 퀘스트가 {job}, {goal}과 관련이 있는지 판단해주세요.
- 선택한 퀘스트가 관련이 없다면 {job}과 {goal}과 관련있는 새로운 퀘스트명을 3개 만들어주세요


# 응답 포맷
{format}
다음 응답 포맷을 기준으로 데이터를 만들어야 합니다.
```
{format}
```
답변하는 데이터가 코드 블럭의 데이터면 절대 안됩니다! 코드 블럭의 데이터는 단순히 답변 포맷의 예시일뿐입니다.
Loading