Skip to content

Commit d1eaa69

Browse files
authored
#116 Feat: 강점 리포트 추천 시 사용자 희망 직업을 추천받는 기능을 추가한다 (#120)
* #116 Feat: 강점 리포트 추천 API의 body에 직업을 추가한다 * #116 Feat: 강점 리포트 추천 API의 명세를 작성한다 * #116 Feat: 강점 리포트 조회 응답에 사용자 희망 직업을 추가한다 * #116 Feat: 강점 리포트 조회와 강점 리포트 히스토리 조회 응답을 분리한다
1 parent 1c81e17 commit d1eaa69

File tree

5 files changed

+42
-14
lines changed

5 files changed

+42
-14
lines changed

src/main/java/next/career/domain/openai/service/OpenAiService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ private static Map<String, Object> setRecommendRoadmapActionPrompt(String system
462462
);
463463
}
464464

465-
public GetStrengthReportDto.Response createStrengthReport(Member member) {
465+
public GetStrengthReportDto.Response createStrengthReport(Member member, String occupation) {
466466

467467
List<Prompt> roadmapAction = promptRepository.findAllByTag("strength report");
468468

@@ -480,6 +480,8 @@ public GetStrengthReportDto.Response createStrengthReport(Member member) {
480480
String finalSystemPrompt = system + "\n\n[사용자 정보]\n" + memberDetailText;
481481
log.info("member detail = {}", member.getMemberDetail());
482482

483+
finalSystemPrompt += " \n\n[사용자 희망 직업]\n" + occupation;
484+
483485
Map<String, Object> body = setStrengthReportPrompt(finalSystemPrompt);
484486

485487
try {

src/main/java/next/career/domain/report/controller/ReportController.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,16 @@ public class ReportController {
2525
@PostMapping("/strength")
2626
@Operation(
2727
summary = "강점 리포트 생성",
28-
description = """
29-
OpenAI API를 호출하여 사용자의 강점 리포트를 새로 생성합니다.
30-
생성된 리포트는 DB에 저장되며, 응답 본문에는 `strength`, `experience`, `appeal`, `keyword`, `job` 필드가 포함됩니다.
31-
"""
28+
description = "OpenAI API를 호출하여 사용자의 강점 리포트를 새로 생성합니다. "
29+
+ "생성된 리포트는 DB에 저장되며, 응답 본문에는 `strength`, `experience`, `appeal`, `keyword`, `job` 필드가 포함됩니다."
3230
)
3331
public ApiResponse<GetStrengthReportDto.Response> createStrengthReport(
3432
@Parameter(hidden = true, description = "인증된 사용자 정보")
35-
@AuthenticationPrincipal AuthDetails authDetails
33+
@AuthenticationPrincipal AuthDetails authDetails,
34+
@RequestBody GetStrengthReportDto.ReportRequest request
3635
) {
3736
Member member = authDetails.getUser();
38-
return ApiResponse.success(reportService.createStrengthReport(member));
37+
return ApiResponse.success(reportService.createStrengthReport(member, request.getOccupation()));
3938
}
4039

4140
@GetMapping("/strength")
@@ -63,7 +62,7 @@ public ApiResponse<GetStrengthReportDto.Response> getStrengthReport(
6362
각 리포트에는 `strength`, `experience`, `appeal`, `keyword`, `job` 정보가 포함됩니다.
6463
"""
6564
)
66-
public ApiResponse<GetStrengthReportDto.Response> getStrengthReportHistory(
65+
public ApiResponse<GetStrengthReportDto.HistoryResponse> getStrengthReportHistory(
6766
@Parameter(hidden = true, description = "인증된 사용자 정보")
6867
@AuthenticationPrincipal AuthDetails authDetails
6968
) {

src/main/java/next/career/domain/report/controller/dto/GetStrengthReportDto.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,22 @@ public static Response of(List<Report> reportList){
2323
}
2424
}
2525

26+
@Getter
27+
@NoArgsConstructor
28+
@AllArgsConstructor
29+
@Builder
30+
public static class HistoryResponse{
31+
private List<Report> reportList;
32+
private String occupation;
33+
34+
public static HistoryResponse of(List<Report> reportList, String occupation){
35+
return HistoryResponse.builder()
36+
.occupation(occupation)
37+
.reportList(reportList)
38+
.build();
39+
}
40+
}
41+
2642
@Getter
2743
@NoArgsConstructor
2844
@AllArgsConstructor
@@ -57,4 +73,11 @@ public static class UpdateRequest{
5773
private List<String> keyword;
5874
private String appeal;
5975
}
76+
77+
@Getter
78+
@NoArgsConstructor
79+
@AllArgsConstructor
80+
public static class ReportRequest {
81+
private String occupation;
82+
}
6083
}

src/main/java/next/career/domain/report/entity/StrengthReport.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,10 @@ public class StrengthReport {
4646

4747
boolean isDeleted = false;
4848

49+
private String occupation;
50+
4951
public static StrengthReport of(Member member, String strength, String experience,
50-
List<String> keyword, List<String> job, String appeal, int version) {
52+
List<String> keyword, List<String> job, String appeal, int version, String occupation) {
5153
return StrengthReport.builder()
5254
.member(member)
5355
.strength(strength)
@@ -56,6 +58,7 @@ public static StrengthReport of(Member member, String strength, String experienc
5658
.job(job)
5759
.appeal(appeal)
5860
.version(version)
61+
.occupation(occupation)
5962
.build();
6063
}
6164

src/main/java/next/career/domain/report/service/ReportService.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ public class ReportService {
2424
private final StrengthReportRepository strengthReportRepository;
2525

2626
@Transactional
27-
public GetStrengthReportDto.Response createStrengthReport(Member member) {
27+
public GetStrengthReportDto.Response createStrengthReport(Member member, String occupation) {
2828
Integer latestVersion = strengthReportRepository.findMaxVersionByMember(member)
2929
.orElse(0);
3030

31-
GetStrengthReportDto.Response response = openAiService.createStrengthReport(member);
31+
GetStrengthReportDto.Response response = openAiService.createStrengthReport(member, occupation);
3232

3333
int newVersion = latestVersion + 1;
3434

@@ -40,7 +40,8 @@ public GetStrengthReportDto.Response createStrengthReport(Member member) {
4040
r.getKeyword(),
4141
r.getJob(),
4242
r.getAppeal(),
43-
newVersion
43+
newVersion,
44+
occupation
4445
))
4546
.toList();
4647

@@ -68,7 +69,7 @@ public GetStrengthReportDto.Response getStrengthReport(Member member) {
6869
return GetStrengthReportDto.Response.of(reportList);
6970
}
7071

71-
public GetStrengthReportDto.Response getStrengthReportCurrentHistory(Member member) {
72+
public GetStrengthReportDto.HistoryResponse getStrengthReportCurrentHistory(Member member) {
7273

7374
List<StrengthReport> strengthReportList = strengthReportRepository.findAllByMember(member);
7475

@@ -93,7 +94,7 @@ public GetStrengthReportDto.Response getStrengthReportCurrentHistory(Member memb
9394
.toList();
9495

9596

96-
return GetStrengthReportDto.Response.of(reportList);
97+
return GetStrengthReportDto.HistoryResponse.of(reportList, latestReports.getFirst().getOccupation());
9798
}
9899

99100
@Transactional

0 commit comments

Comments
 (0)