From 3050d6c7691dae00a2e3a35e2bb847379f6e5e75 Mon Sep 17 00:00:00 2001 From: Juyong Park Date: Mon, 25 Aug 2025 21:06:55 +0900 Subject: [PATCH 1/2] :recycle:Refactor: sse rollback --- .../controller/AnalysisReportController.java | 53 ++----------------- 1 file changed, 4 insertions(+), 49 deletions(-) diff --git a/src/main/java/com/practice/likelionhackathoncesco/domain/analysisreport/controller/AnalysisReportController.java b/src/main/java/com/practice/likelionhackathoncesco/domain/analysisreport/controller/AnalysisReportController.java index b8e976b..0cc5378 100644 --- a/src/main/java/com/practice/likelionhackathoncesco/domain/analysisreport/controller/AnalysisReportController.java +++ b/src/main/java/com/practice/likelionhackathoncesco/domain/analysisreport/controller/AnalysisReportController.java @@ -40,9 +40,8 @@ public class AnalysisReportController { @Operation(summary = "등기부등본 분석 결과 API", description = "분석리포트 페이지에 결과 반환") @PostMapping( value = "/analysis-result", - consumes = MediaType.MULTIPART_FORM_DATA_VALUE, - produces = MediaType.TEXT_EVENT_STREAM_VALUE) - public SseEmitter getAnalysisReport( + consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public ResponseEntity> getAnalysisReport( @Parameter(description = "업로드할 파일") @RequestParam("file") MultipartFile file, @Parameter(description = "전월세 여부") @RequestParam("isMonthlyRent") Integer isMonthlyRent, @Parameter(description = "전월세 보증금") @RequestParam("deposit") Long deposit, @@ -50,51 +49,7 @@ public SseEmitter getAnalysisReport( @Parameter(description = "상세 주소") @RequestParam("detailAddress") String detailAddress, @Parameter(description = "예시 파일 여부") @RequestParam("isExample") Integer isExample) { - SseEmitter emitter = new SseEmitter(1000L * 60 * 10); // 10분; - - new Thread( - () -> { - try { - emitter.send(progress(10, "분석 시작", null)); - - AnalysisReport savedReport = - analysisFlowService.uploadDocuments( - PathName.PROPERTYREGISTRY, file); // S3 업로드 + DB 저장(reportId 저장은 x) - - emitter.send(progress(30, "s3 업로드 완료", null)); - - // ptAnalysisRequest 생성 (파일 제외하고) - GptAnalysisRequest gptAnalysisRequest = - new GptAnalysisRequest( - null, // file은 이미 처리했으므로 null - isMonthlyRent, - deposit, - monthlyRent, - detailAddress, - isExample); - - AnalysisReportResponse analysisReportResponse = - analysisFlowService.processAnalysisReport( - savedReport.getReportId(), gptAnalysisRequest); - - emitter.send(progress(60, "등기부등본 분석 완료", null)); - - emitter.send(progress(100, "분석리포트 결과 반환 완료", analysisReportResponse)); - emitter.complete(); - - } catch (Exception e) { - try { - emitter.send(progress(-1, "에러 발생: " + e.getMessage(), null)); - } catch (Exception ignore) { - } - emitter.completeWithError(e); - } - }) - .start(); - - return emitter; - - /* AnalysisReport savedReport = + AnalysisReport savedReport = analysisFlowService.uploadDocuments(PathName.PROPERTYREGISTRY, file); // S3 업로드 + DB 저장 // ptAnalysisRequest 생성 (파일 제외하고) @@ -109,7 +64,7 @@ public SseEmitter getAnalysisReport( AnalysisReportResponse analysisReportResponse = analysisFlowService.processAnalysisReport(savedReport.getReportId(), gptAnalysisRequest); - return ResponseEntity.ok(BaseResponse.success("분석리포트 결과 반환 완료", analysisReportResponse));*/ + return ResponseEntity.ok(BaseResponse.success("분석리포트 결과 반환 완료", analysisReportResponse)); } @Operation(summary = "등기부등본 파일 삭제 API", description = "X버튼을 눌러 업로드한 등기부등본 문서를 삭제하는 API") From 11c64087dff6c7ce31d7f849ecdfcb6dc72ab56b Mon Sep 17 00:00:00 2001 From: Juyong Park Date: Mon, 25 Aug 2025 21:08:49 +0900 Subject: [PATCH 2/2] spotless Apply --- .../controller/AnalysisReportController.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/practice/likelionhackathoncesco/domain/analysisreport/controller/AnalysisReportController.java b/src/main/java/com/practice/likelionhackathoncesco/domain/analysisreport/controller/AnalysisReportController.java index 0cc5378..f34a996 100644 --- a/src/main/java/com/practice/likelionhackathoncesco/domain/analysisreport/controller/AnalysisReportController.java +++ b/src/main/java/com/practice/likelionhackathoncesco/domain/analysisreport/controller/AnalysisReportController.java @@ -23,7 +23,6 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; @Slf4j @RestController @@ -38,9 +37,7 @@ public class AnalysisReportController { // 안전지수, 지피티 분석 설명 반환하는 api -> 단, s3 url 가지고 파일 객체 // 생성해야함!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @Operation(summary = "등기부등본 분석 결과 API", description = "분석리포트 페이지에 결과 반환") - @PostMapping( - value = "/analysis-result", - consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @PostMapping(value = "/analysis-result", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ResponseEntity> getAnalysisReport( @Parameter(description = "업로드할 파일") @RequestParam("file") MultipartFile file, @Parameter(description = "전월세 여부") @RequestParam("isMonthlyRent") Integer isMonthlyRent, @@ -49,7 +46,7 @@ public ResponseEntity> getAnalysisReport( @Parameter(description = "상세 주소") @RequestParam("detailAddress") String detailAddress, @Parameter(description = "예시 파일 여부") @RequestParam("isExample") Integer isExample) { - AnalysisReport savedReport = + AnalysisReport savedReport = analysisFlowService.uploadDocuments(PathName.PROPERTYREGISTRY, file); // S3 업로드 + DB 저장 // ptAnalysisRequest 생성 (파일 제외하고)