Skip to content
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
Original file line number Diff line number Diff line change
@@ -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);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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<String> livingCharacters = new ArrayList<>();
private String previousStory;

}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,5 @@
public class FinalWordResponse {

private FinalWordAnswerDTO answer;
private TokensDTO tokens;

}
50 changes: 16 additions & 34 deletions src/main/java/com/server/gummymurderer/service/ScenarioService.java
Original file line number Diff line number Diff line change
Expand Up @@ -202,55 +202,37 @@ 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<NpcInfo> 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<String, Object> 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();

FinalWordResponse result = webClient
.post()
.uri(url)
.contentType(MediaType.APPLICATION_JSON)
.body(BodyInserters.fromValue(jsonRequest))
.bodyValue(aiRequest)
.retrieve()
.bodyToMono(FinalWordResponse.class)
.block();
Expand Down