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
26 changes: 26 additions & 0 deletions src/main/java/com/api/sss/model/controller/ModelController.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.api.sss.model.controller;

import com.api.sss.model.dto.request.ChatPredictRequest;
import com.api.sss.model.dto.request.NewsRequest;
import com.api.sss.model.dto.response.NewsResponse;
import com.api.sss.model.service.ModelService;
Expand All @@ -14,6 +15,7 @@
import com.api.sss.config.response.dto.SuccessStatus;
import com.api.sss.model.dto.request.ChatAskRequest;
import com.api.sss.model.dto.response.ChatAskResponse;
import com.api.sss.model.dto.response.ChatPredictResponse;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
Expand All @@ -31,6 +33,30 @@ public class ModelController {
RestTemplate restTemplate = new RestTemplate();
private final ModelService modelService;


@Operation(
summary = "코인 시세 예측 API",
description = "코인종목 명을 입력받아 FastAPI 서비스에 전달하고 답변을 받아옵니다."
)
@ApiResponse(responseCode = "200", description = "답변 수신 성공")
@ApiResponse(
responseCode = "500",
description = "FastAPI 서비스 오류 또는 통신 실패",
content = @Content(mediaType = "application/json", examples = @ExampleObject(value = """
{
"code": 500,
"message": "FastAPI와의 통신 중 오류가 발생했습니다."
}
"""))
)
@PostMapping(path = "/chat/predict")
public CustomResponse<ChatPredictResponse> predictCoin(
@RequestBody ChatPredictRequest request) {
ChatPredictResponse response = modelService.predictCoin(request);
return CustomResponse.success(response, SuccessStatus.SUCCESS);
}


@Operation(
summary = "질문 전송 API",
description = "질문을 FastAPI 서비스에 전달하고 답변을 받아옵니다."
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.api.sss.model.dto.request;

import jakarta.validation.constraints.NotBlank;
import lombok.Getter;

@Getter
public class ChatPredictRequest {
@NotBlank(message = "종목명은 비어 있을 수 없습니다.")
private String coinName;
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.api.sss.stt.dto.response;
package com.api.sss.model.dto.response;

import lombok.AllArgsConstructor;
import lombok.Builder;
Expand Down
46 changes: 26 additions & 20 deletions src/main/java/com/api/sss/model/service/ModelService.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@
import com.api.sss.config.exception.CustomException;
import com.api.sss.config.exception.ErrorCode;
import com.api.sss.model.dto.request.ChatAskRequest;
import com.api.sss.model.dto.request.ChatPredictRequest;
import com.api.sss.model.dto.request.NewsRequest;
import com.api.sss.model.dto.response.ChatAskResponse;
import com.api.sss.model.dto.response.ChatPredictResponse;
import com.api.sss.model.dto.response.NewsResponse;

@Service
Expand All @@ -25,6 +27,30 @@ public class ModelService {
private final RestTemplate restTemplate = new RestTemplate();
private final String FASTAPI_URL = "http://203.153.147.12:5050";


public ChatPredictResponse predictCoin(ChatPredictRequest request) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<ChatPredictRequest> entity = new HttpEntity<>(request, headers);

try {
// TODO: return response.getBody();
// ResponseEntity<String> response = restTemplate.exchange(
// FASTAPI_URL + "/chat/predict",
// HttpMethod.POST,
// entity,
// String.class
// );
return ChatPredictResponse.builder()
.prediction(request.getCoinName())
.build();
} catch (Exception e) {
throw new CustomException(ErrorCode.FASTAPI_COMMUNICATION_ERROR);
}
}


public List<NewsResponse.Result> cardNews(NewsRequest request) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
Expand Down Expand Up @@ -63,25 +89,5 @@ public ChatAskResponse askQuestion(ChatAskRequest request) {
}
}

public String predictCoin(String coinName) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

Map<String, String> body = new HashMap<>();
body.put("coinName", coinName);
HttpEntity<Map<String, String>> entity = new HttpEntity<>(body, headers);

try {
// TODO: return response.getBody();
// ResponseEntity<String> response = restTemplate.exchange(
// FASTAPI_URL + "/chat/predict",
// HttpMethod.POST,
// entity,
// String.class
// );
return coinName;
} catch (Exception e) {
throw new CustomException(ErrorCode.FASTAPI_COMMUNICATION_ERROR);
}
}
}
56 changes: 0 additions & 56 deletions src/main/java/com/api/sss/stt/controller/SttController.java

This file was deleted.

74 changes: 0 additions & 74 deletions src/main/java/com/api/sss/stt/service/SttService.java

This file was deleted.