Skip to content

Commit eeeec7b

Browse files
committed
Merge branch 'V1' into hwang
2 parents c549e10 + 0a3c386 commit eeeec7b

File tree

5 files changed

+35
-7
lines changed

5 files changed

+35
-7
lines changed

src/main/java/com/podofarm/dev/api/code/controller/CodeController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ public ResponseEntity<String> receiveData(@RequestBody String data) {
5959
ObjectMapper Data = new ObjectMapper();
6060
JsonNode convertData = Data.readTree(data);
6161

62+
6263
log.info(data);
6364
if (validateUserStudySync(convertData)) {
6465
return ResponseEntity.ok("success");
@@ -77,6 +78,8 @@ public ResponseEntity<String> upload(@RequestBody String request) throws JsonPro
7778
ObjectMapper Data = new ObjectMapper();
7879
JsonNode convertData = Data.readTree(request);
7980

81+
log.info(String.valueOf(convertData));
82+
8083
codeService.upload(convertData);
8184
return ResponseEntity.ok("Upload successful");
8285
}
@@ -138,4 +141,3 @@ public OpenAIResponse analyzeCode(@RequestBody OpenAIRequest request) {
138141

139142

140143

141-

src/main/java/com/podofarm/dev/api/code/domain/dto/UploadDTO.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,21 @@ public class UploadDTO {
1616
private String time;
1717
private String performance;
1818
private String annotation;
19-
private String status;
19+
private boolean status;
2020
private String annotatedSource;
2121
private String accuracy;
2222

2323
public UploadDTO(JsonNode request) {
2424
this.memberId = request.get("id").asText();
2525
this.problemId = request.get("problemId").asText();
26+
27+
28+
//.
2629
this.source = request.get("sourceText").asText();
2730
this.time = request.get("timeSpent").asText();
2831
this.performance = request.get("commitMessage").asText();
2932
this.annotation = "/** 주석 공간 테스트 */";
30-
this.status = "Y";
33+
this.status = true;
3134
this.annotatedSource = annotation + "\n" + source;
3235
this.accuracy = request.get("resultMessage").asText();
3336
this.performance = request.get("commitMessage").asText();

src/main/java/com/podofarm/dev/api/code/domain/dto/response/OpenAIResponse.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,11 @@ public static class Usage {
4444
@JsonProperty("total_tokens")
4545
private int totalTokens;
4646
}
47+
48+
public String getAnalyzedCode() {
49+
if (choices != null && !choices.isEmpty()) {
50+
return choices.get(0).getMessage().getContent(); // 첫 번째 응답의 content 반환
51+
}
52+
return ""; // choices가 비어있으면 빈 문자열 반환
53+
}
4754
}

src/main/java/com/podofarm/dev/api/code/service/CodeService.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,24 +44,36 @@ public class CodeService {
4444
public void upload(JsonNode request) {
4545
UploadDTO uploadDTO = new UploadDTO(request);
4646

47-
MemberEntity memberEntity = memberRepository.findById(uploadDTO.getMemberId())
48-
.orElseThrow(() -> new IllegalArgumentException("해당 회원이 존재하지 않습니다: " + uploadDTO.getMemberId()));
47+
// 1. OpenAI 코드 분석 API를 호출하여 1차 포장된 source 얻기
48+
OpenAIRequest openAIRequest = new OpenAIRequest();
49+
openAIRequest.setCode(uploadDTO.getSource());
4950

51+
OpenAIResponse aiResponse = analyzeCode(openAIRequest);
52+
String analyzedSource = aiResponse.getAnalyzedCode();
53+
54+
// 2. problemId로 problem 테이블에서 problemSolution 조회 후 source에 추가
5055
ProblemEntity problemEntity = problemRepository.findById(Long.parseLong(uploadDTO.getProblemId()))
5156
.orElseThrow(() -> new IllegalArgumentException("해당 문제 ID가 존재하지 않습니다: " + uploadDTO.getProblemId()));
5257

58+
// 3. 최종코드
59+
String finalSource = problemEntity.getProblemSolution() + analyzedSource;
60+
61+
MemberEntity memberEntity = memberRepository.findById(uploadDTO.getMemberId())
62+
.orElseThrow(() -> new IllegalArgumentException("해당 회원이 존재하지 않습니다: " + uploadDTO.getMemberId()));
63+
5364
CodeEntity codeEntity = CodeEntity.builder()
5465
.memberEntity(memberEntity)
5566
.problemEntity(problemEntity)
56-
.codeSource(uploadDTO.getAnnotatedSource())
67+
.codeSource(finalSource)
5768
.codeSolvedDate(uploadDTO.getSolvedDateAsTimestamp())
5869
.codeTime(Time.valueOf(uploadDTO.getTime()))
59-
.codeStatus(Boolean.valueOf(uploadDTO.getStatus()))
70+
.codeStatus(uploadDTO.isStatus())
6071
.build();
6172

6273
codeRepository.save(codeEntity);
6374
}
6475

76+
6577
public CommentListResponse allComment(Long codeNo) {
6678
CodeEntity code = codeRepository.findByIdWithComments(codeNo)
6779
.orElseThrow(() -> new RuntimeException("없는 코드입니다."));

src/main/java/com/podofarm/dev/api/problem/domain/entity/ProblemEntity.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,11 @@ public class ProblemEntity {
3838
@Column(name = "problem_id")
3939
private Long problemId;
4040

41+
@Column(name = "problem_solution")
42+
private String problemSolution;
43+
4144
@OneToMany(mappedBy = "problemEntity")
4245
private final List<CodeEntity> codeList = new ArrayList<>();
4346

47+
4448
}

0 commit comments

Comments
 (0)