From 4db77f80a66daad37bd819584aed85d774007694 Mon Sep 17 00:00:00 2001 From: shinae1023 Date: Thu, 18 Jun 2026 16:25:10 +0900 Subject: [PATCH] =?UTF-8?q?[Fix]=20=EB=AA=A8=EC=9D=98=20=EA=B3=B5=EA=B3=A0?= =?UTF-8?q?=20=EC=A7=88=EB=AC=B8=20=EC=A1=B0=ED=9A=8C=20GET=20=EC=A7=80?= =?UTF-8?q?=EC=9B=90=20=EB=B0=8F=20=ED=9A=8C=EC=82=AC=EB=AA=85=20=ED=98=BC?= =?UTF-8?q?=EC=84=A0=20=ED=94=84=EB=A1=AC=ED=94=84=ED=8A=B8=20=EB=B3=B4?= =?UTF-8?q?=EC=99=84=20(#38)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MockJobPostingController.java | 27 ++++++++++++++++++- .../service/JobPostingAiService.java | 9 ++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/jobdri/jobdri_api/domain/jobposting/controller/MockJobPostingController.java b/src/main/java/com/jobdri/jobdri_api/domain/jobposting/controller/MockJobPostingController.java index 6b2e9a6..6fb856c 100644 --- a/src/main/java/com/jobdri/jobdri_api/domain/jobposting/controller/MockJobPostingController.java +++ b/src/main/java/com/jobdri/jobdri_api/domain/jobposting/controller/MockJobPostingController.java @@ -13,9 +13,11 @@ import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @@ -48,8 +50,31 @@ public ApiResponse generateMockJobPosting( summary = "모의 공고 추천 질문 조회", description = "선택한 회사/직무 기준으로 모의 공고 추천 질문을 조회합니다. 질문은 직무 기준 캐시를 재사용합니다." ) - @PostMapping("/questions") + @GetMapping("/questions") public ApiResponse getMockRecommendedQuestions( + @AuthenticationPrincipal UserDetailsImpl userDetails, + @RequestParam Long companyId, + @RequestParam Long middleClassificationId, + @RequestParam Long detailClassificationId + ) { + validateAuthenticatedUser(userDetails); + JobPostingMockGenerateRequest request = new JobPostingMockGenerateRequest( + companyId, + middleClassificationId, + detailClassificationId + ); + return ApiResponse.onSuccess( + "모의 공고 추천 질문 조회에 성공했습니다.", + new JobPostingMockQuestionResponse(mockQuestionCacheService.getRecommendedQuestions(request)) + ); + } + + @Operation( + summary = "모의 공고 추천 질문 조회", + description = "선택한 회사/직무 기준으로 모의 공고 추천 질문을 조회합니다. 하위 호환을 위해 POST 요청도 지원합니다." + ) + @PostMapping("/questions") + public ApiResponse getMockRecommendedQuestionsByPost( @AuthenticationPrincipal UserDetailsImpl userDetails, @Valid @RequestBody JobPostingMockGenerateRequest request ) { diff --git a/src/main/java/com/jobdri/jobdri_api/domain/jobposting/service/JobPostingAiService.java b/src/main/java/com/jobdri/jobdri_api/domain/jobposting/service/JobPostingAiService.java index f6fbf32..5e27ef3 100644 --- a/src/main/java/com/jobdri/jobdri_api/domain/jobposting/service/JobPostingAiService.java +++ b/src/main/java/com/jobdri/jobdri_api/domain/jobposting/service/JobPostingAiService.java @@ -126,7 +126,7 @@ public JobPostingMockQuestionResponse generateMockRecommendedQuestions( var params = ResponseCreateParams.builder() .model(extractionModel) - .input(buildMockQuestionPrompt(request, detailClassification, retrievalContext)) + .input(buildMockQuestionPrompt(company, request, detailClassification, retrievalContext)) .temperature(0.4) .text(JobPostingMockQuestionResponse.class) .build(); @@ -505,6 +505,7 @@ private String buildMockGenerationPrompt( } private String buildMockQuestionPrompt( + Company company, JobPostingMockGenerateRequest request, DetailClassification detailClassification, RetrievalContext retrievalContext @@ -531,6 +532,11 @@ private String buildMockQuestionPrompt( 3. 질문은 서로 중복되지 않게 작성하세요. 4. 참고 공고가 있으면 직무 맥락과 자주 요구되는 역량을 반영하세요. 5. 참고 공고가 없으면 중분류/소분류명만 기반으로 일반적인 직무 질문을 작성하세요. + 6. 질문에 회사명을 포함해야 한다면 반드시 아래 제공된 회사명만 사용하세요. + 7. 참고 자료에 등장하는 다른 회사명은 절대 질문에 쓰지 마세요. + + [회사명] + %s [중분류 ID] %d @@ -550,6 +556,7 @@ private String buildMockQuestionPrompt( [같은 조건의 유사 자소서 문항 참고 자료] %s """.formatted( + company.getName(), request.middleClassificationId(), middleName, request.detailClassificationId(),