21#include "Engine/Engine.h"
26 PrimaryActorTick.bCanEverTick =
false;
37 if (
auto KLingoNetwork = UKLingoNetworkSystem::Get(GetWorld()))
40 KLingoNetwork->RequestUserRegister(
47 PRINTLOG(TEXT(
"UKLingoNetworkSystem not found!"));
53 if (
auto KLingoNetwork = UKLingoNetworkSystem::Get(GetWorld()))
56 KLingoNetwork->RequestUserToken(
63 PRINTLOG(TEXT(
"UKLingoNetworkSystem not found!"));
69 if (
auto KLingoNetwork = UKLingoNetworkSystem::Get(GetWorld()))
71 PRINTLOG(TEXT(
"[TEST] RequestUserMe"));
76 PRINTLOG(TEXT(
"UKLingoNetworkSystem not found!"));
84 PRINTLOG(TEXT(
"--- User Register SUCCESS ---"));
89 PRINTLOG(TEXT(
"--- User Register FAILED ---"));
97 PRINTLOG(TEXT(
"--- User Token SUCCESS ---"));
102 PRINTLOG(TEXT(
"--- User Token FAILED ---"));
110 PRINTLOG(TEXT(
"--- User Me SUCCESS ---"));
113 PC->Server_SetUserInfo(ResponseData);
117 PRINTLOG(TEXT(
"--- User Me FAILED ---"));
126 if (
auto KLingoNetwork = UKLingoNetworkSystem::Get(GetWorld()))
136 PRINTLOG(TEXT(
"UKLingoNetworkSystem not found!"));
142 if (
auto KLingoNetwork = UKLingoNetworkSystem::Get(GetWorld()))
145 KLingoNetwork->RequestSpeakingJudges(
152 PRINTLOG(TEXT(
"UKLingoNetworkSystem not found!"));
158 if (
auto KLingoNetwork = UKLingoNetworkSystem::Get(GetWorld()))
161 KLingoNetwork->RequestListenAudio(
168 PRINTLOG(TEXT(
"UKLingoNetworkSystem not found!"));
174 if (
auto KLingoNetwork = UKLingoNetworkSystem::Get(GetWorld()))
176 PRINTLOG(TEXT(
"[TEST] RequestInterviewHello"));
177 KLingoNetwork->RequestInterviewHello(
183 PRINTLOG(TEXT(
"UKLingoNetworkSystem not found!"));
191 PRINTLOG(TEXT(
"--- OCR Extract SUCCESS ---"));
198 PRINTLOG(TEXT(
"--- OCR Extract FAILED ---"));
206 PRINTLOG(TEXT(
"--- Speaking Questions SUCCESS ---"));
208 UDialogManager::Get(GetWorld())->ShowToast(*ResponseData.
final_feedback);
212 PRINTLOG(TEXT(
"--- Speaking Questions FAILED ---"));
220 PRINTLOG(TEXT(
"--- Listen Audio SUCCESS ---"));
223 UDialogManager::Get(GetWorld())->ShowToast(*ResponseData.
audio_text);
228 PRINTLOG(TEXT(
"--- Listen Audio FAILED ---"));
237 PRINTLOG(TEXT(
"--- InterViewHello Questions SUCCESS ---"));
240 if (
auto Popup = UPopupManager::ShowPopupAs<UPopup_InterviewHello>(GetWorld(), EPopupType::InterviewHello))
242 Popup->InitPopup(ResponseData);
247 PRINTLOG(TEXT(
"--- InterViewHello Questions FAILED ---"));
258 if (
auto KLingoNetwork = UKLingoNetworkSystem::Get(GetWorld()))
261 KLingoNetwork->RequestChatQuestion(
269 PRINTLOG(TEXT(
"UKLingoNetworkSystem not found!"));
275 if (
auto KLingoNetwork = UKLingoNetworkSystem::Get(GetWorld()))
278 KLingoNetwork->RequestChatAudio(
286 PRINTLOG(TEXT(
"UKLingoNetworkSystem not found!"));
294 PRINTLOG(TEXT(
"--- Chat Answers SUCCESS ---"));
297 if (
auto* GS = GetWorld()->GetGameState<ALingoGameState>())
299 FText AIAnswer = FText::FromString(ResponseData.
answer);
308 PRINTLOG(TEXT(
"--- Chat Answers FAILED ---"));
APlayerControl 선언에 대한 Doxygen 주석을 제공합니다.
YiSan 전반에서 사용하는 공용 인터페이스를 선언합니다.
#define PRINTLOG(fmt,...)
네트워크 요청과 응답에 사용되는 구조체 및 설정을 정의합니다.
UDialogManager 클래스를 선언합니다.
KLingo API 요청을 담당하는 서브시스템을 선언합니다.
STT·GPT·TTS 파이프라인을 연결하는 음성 대화 컴포넌트를 선언합니다.
FString ChatContext
Chat 답변 요청 테스트용 컨텍스트입니다.
void RequestOcrExtract()
OCR 텍스트 추출 요청을 전송합니다 (POST /writes/ocr/extract).
TObjectPtr< class UVoiceConversationSystem > VoiceConversationSystem
음성 대화 시스템 참조입니다.
void OnResponseInterviewHello(FResponseInterviewHello &ResponseData, bool bWasSuccessful)
FString OcrImagePath
OCR 테스트용 이미지 파일 경로입니다 (프로젝트 루트 기준).
void OnResponseUserToken(FResponseUserToken &ResponseData, bool bWasSuccessful)
void OnResponseChatAnswers(FResponseChatAnswers &ResponseData, bool bWasSuccessful)
void RequestListenAudio()
Listen 음성 생성 요청을 전송합니다.
void RequestChatAnswers()
Chat 답변 요청을 전송합니다 (텍스트 질문).
void RequestChatAnswersWithAudio()
Chat 답변 요청을 전송합니다 (음성 질문).
FString SpeakingAudioPath
Speaking 테스트용 오디오 파일 경로입니다 (프로젝트 루트 기준).
void RequestUserToken()
OAuth2 토큰 발급 요청을 전송합니다 (POST /users/token).
FString ChatQuestion
Chat 답변 요청 테스트용 질문입니다.
FString ChatAudioPath
Chat 답변 요청 테스트용 오디오 파일 경로입니다.
FString AudioText
TTS 테스트용 입력 텍스트입니다.
void OnResponseListenAudio(FResponseListenAudio &ResponseData, bool bWasSuccessful)
FString UserName
테스트에 사용할 사용자 이름입니다.
void RequestInterviewHello()
인터뷰 시작 요청을 전송합니다.
ANetworkTesterActor()
기본 컴포넌트를 구성하는 생성자입니다.
void OnResponseSpeakingJudes(FResponseSpeakingJudes &ResponseData, bool bWasSuccessful)
void RequestUserRegister()
사용자 등록 요청을 전송합니다 (POST /users/register).
void RequestUserMe()
현재 사용자 정보 조회 요청을 전송합니다 (GET /users/me).
FString SpeakingQuestion
Speaking 테스트용 질문 텍스트입니다.
void OnResponseOcrExtract(FResponseWriteSubmit &ResponseData, bool bWasSuccessful)
void OnResponseUserRegister(FResponseUserRegister &ResponseData, bool bWasSuccessful)
void OnResponseUserMe(FResponseUserMe &ResponseData, bool bWasSuccessful)
void RequestSpeakingQuestions()
Speaking 답변 요청을 전송합니다 (POST /speakings/questions).
static class APlayerControl * GetPlayerControl(const UObject *WorldContextObject)
void PrintData() const
디버그 로그에 응답 내용을 출력합니다.
void PrintData() const
디버그 로그에 응답 내용을 출력합니다.
TArray< uint8 > audio_base64
Speaking Questions 응답 구조체입니다.
void PrintData() const
디버그 로그에 응답 내용을 출력합니다.
void PrintData() const
디버그 로그에 응답 내용을 출력합니다.
void PrintData() const
디버그 로그에 응답 내용을 출력합니다.