diff --git a/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordAIRequest.java b/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordAIRequest.java index 16ef0c3..7b1113a 100644 --- a/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordAIRequest.java +++ b/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordAIRequest.java @@ -1,4 +1,22 @@ package com.server.gummymurderer.domain.dto.scenario; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Getter +@ToString +@NoArgsConstructor +@AllArgsConstructor public class FinalWordAIRequest { + + private Long gameNo; + private String language; + private String gameResult; + + public static FinalWordAIRequest of(Long gameNo, String language, String gameResult) { + return new FinalWordAIRequest(gameNo, language, gameResult); + } + } diff --git a/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordRequest.java b/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordRequest.java index a3ea606..d793913 100644 --- a/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordRequest.java +++ b/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordRequest.java @@ -3,22 +3,13 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; -import lombok.Setter; - -import java.util.ArrayList; -import java.util.List; @Getter -@Setter @NoArgsConstructor @AllArgsConstructor public class FinalWordRequest { private Long gameSetNo; - private String secretKey; - private String gameResult; - private String murderer; - private List livingCharacters = new ArrayList<>(); - private String previousStory; } + diff --git a/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordRequest2.java b/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordRequest2.java deleted file mode 100644 index 933f029..0000000 --- a/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordRequest2.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.server.gummymurderer.domain.dto.scenario; - -public class FinalWordRequest2 { -} diff --git a/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordResponse.java b/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordResponse.java index 2b6b4f6..5db8624 100644 --- a/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordResponse.java +++ b/src/main/java/com/server/gummymurderer/domain/dto/scenario/FinalWordResponse.java @@ -12,6 +12,5 @@ public class FinalWordResponse { private FinalWordAnswerDTO answer; - private TokensDTO tokens; } diff --git a/src/main/java/com/server/gummymurderer/service/ScenarioService.java b/src/main/java/com/server/gummymurderer/service/ScenarioService.java index 830fafd..8aac130 100644 --- a/src/main/java/com/server/gummymurderer/service/ScenarioService.java +++ b/src/main/java/com/server/gummymurderer/service/ScenarioService.java @@ -202,47 +202,29 @@ public FinalWordAnswerDTO finalWords(FinalWordRequest request, Member loginMembe GameSet foundGameSet = gameSetRepository.findByGameSetNoAndMember(request.getGameSetNo(), loginMember) .orElseThrow(() -> new AppException(ErrorCode.GAME_SET_NOT_FOUND)); - String secretKey = "mafia"; - request.setSecretKey(secretKey); + // 언어 설정 조회 + Language userLanguage = gameSettingRepository.findByMemberNo(loginMember.getMemberNo()) + .map(GameSetting::getLanguage) + .orElse(Language.KO); - // gameResult 정보 가져오기 - String gameResult = null; + String userLangCode = userLanguage.name().toLowerCase(); - if (foundGameSet.getGameResult() == GameResult.WIN) { - gameResult = "victory"; - } else { + // 게임 결과 체크 및 반환 + if (foundGameSet.getGameResult() != GameResult.WIN) { throw new AppException(ErrorCode.GAME_NOT_WON); } + String gameResultCode = foundGameSet.getGameResult().name(); - log.info("🐻 gameResult : {}", foundGameSet.getGameResult()); - - // murderer 정보 가져오기 - String murderer = gameNpcRepository.findMurderByGameSetNo(foundGameSet.getGameSetNo()); - - // previousStory 정보 가져오기 - String previousStory = gameScenarioRepository.findTopByGameSetOrderByScenarioNoDesc(foundGameSet) - .map(GameScenario::getDailySummary) - .orElseThrow(() -> new AppException(ErrorCode.SCENARIO_NOT_FOUND)); - - // livingCharacters 정보 가져오기 - List livingCharacters = gameNpcRepository.findAllAliveResidentNpcInfoByGameSetNo(foundGameSet.getGameSetNo()); - - String url = aiUrl + "/api/v1/scenario/final-words"; + log.info("🐻gameResultCode : {}", gameResultCode); + String url = aiUrl + "/api/v2/new-game/final-words"; log.info("🐻 ai 요청 url : {}", url); - Map requestData = new HashMap<>(); - requestData.put("gameNo", foundGameSet.getGameSetNo()); - requestData.put("secretKey", request.getSecretKey()); - requestData.put("gameResult", gameResult); - requestData.put("murderer", murderer); - requestData.put("livingCharacters", livingCharacters); - requestData.put("previousStory", previousStory); - - ObjectMapper objectMapper = new ObjectMapper(); - - String jsonRequest = objectMapper.writeValueAsString(requestData); - log.info("🐻jsonRequest : {} ", jsonRequest); + FinalWordAIRequest aiRequest = FinalWordAIRequest.of( + foundGameSet.getGameSetNo(), + userLangCode, + gameResultCode + ); WebClient webClient = WebClient.create(); @@ -250,7 +232,7 @@ public FinalWordAnswerDTO finalWords(FinalWordRequest request, Member loginMembe .post() .uri(url) .contentType(MediaType.APPLICATION_JSON) - .body(BodyInserters.fromValue(jsonRequest)) + .bodyValue(aiRequest) .retrieve() .bodyToMono(FinalWordResponse.class) .block();