From 9c80a1679b71d615a55b98662a86a119d0242e9c Mon Sep 17 00:00:00 2001 From: Fishphobiagg Date: Thu, 5 Oct 2023 13:22:58 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20SSE=20=EB=B0=8F=20=EA=B7=B8=EB=A6=BC=20?= =?UTF-8?q?=EB=B3=80=ED=99=98=ED=95=98=EA=B8=B0=20=EB=A1=9C=EA=B9=85=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20[BACK-341]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/canvas/controller/CanvasController.java | 4 ++++ .../domain/canvas/service/CanvasConvertService.java | 1 + .../google/controller/DetectingTestController.java | 8 ++++++++ .../domain/google/service/VisionDetectingService.java | 11 +++++++++++ .../sse/application/CanvasSseEmitterService.java | 4 +++- .../domain/sse/application/ConvertResultSender.java | 4 ++++ 6 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/siliconvalley/domain/canvas/controller/CanvasController.java b/src/main/java/com/siliconvalley/domain/canvas/controller/CanvasController.java index b56fc8e..ad931af 100644 --- a/src/main/java/com/siliconvalley/domain/canvas/controller/CanvasController.java +++ b/src/main/java/com/siliconvalley/domain/canvas/controller/CanvasController.java @@ -6,6 +6,7 @@ import com.siliconvalley.domain.sse.application.CanvasSseEmitterService; import com.siliconvalley.global.common.dto.Response; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -17,6 +18,7 @@ @RequiredArgsConstructor @RestController @RequestMapping("/api/canvases") +@Slf4j public class CanvasController { private final CanvasConvertService canvasConvertService; @@ -29,6 +31,7 @@ public ResponseEntity convertSketchToCanvas( @RequestParam Long profileId, @RequestParam Long subjectId ) throws IOException { + log.info(profileId + "번 프로필의 " + subjectId + "번 주제에 대한 최초 변환 요청"); String sketch = s3ImageUploadService.uploadFile(sketchFile, s3PathBuildService.buildPath(profileId, "sketch")); Response response = canvasConvertService.convertSketchToCanvas(profileId, subjectId, sketch); return ResponseEntity.status(HttpStatus.CREATED).body(response); @@ -40,6 +43,7 @@ public ResponseEntity updateSketchAndCanvas( @RequestParam Long profileId, @PathVariable Long canvasId ) throws IOException { + log.info(profileId + "번 프로필의 " + canvasId + "번 그림에 대한 변환 요청"); String sketch = s3ImageUploadService.uploadFile(sketchFile, s3PathBuildService.buildPath(profileId, "sketch")); Response response = canvasConvertService.updateSketchAndCanvas(profileId, canvasId, sketch); return ResponseEntity.status(HttpStatus.OK).body(response); diff --git a/src/main/java/com/siliconvalley/domain/canvas/service/CanvasConvertService.java b/src/main/java/com/siliconvalley/domain/canvas/service/CanvasConvertService.java index 5179bbd..a1b266f 100644 --- a/src/main/java/com/siliconvalley/domain/canvas/service/CanvasConvertService.java +++ b/src/main/java/com/siliconvalley/domain/canvas/service/CanvasConvertService.java @@ -65,6 +65,7 @@ public void updateConvertedData(SketchConversionResponse response){ canvas.updateCanvas(response.getCanvasUrl()); Long profileId = canvas.getProfile().getId(); ConvertEventDto convertEventDto = new ConvertEventDto(canvas.getId(), response.getCanvasUrl()); + log.info(canvas.getId() + "번 그림에 대한 변환 처리 완료 및 SSE로 메시지 전송"); convertResultSender.send(canvasSseEmitterFinder.findByProfileId(profileId), convertEventDto, profileId, "drawing"); } public void sendConvertedDemoCanvas(DemoConversionResponse response){ diff --git a/src/main/java/com/siliconvalley/domain/google/controller/DetectingTestController.java b/src/main/java/com/siliconvalley/domain/google/controller/DetectingTestController.java index e2c7262..6e423fc 100644 --- a/src/main/java/com/siliconvalley/domain/google/controller/DetectingTestController.java +++ b/src/main/java/com/siliconvalley/domain/google/controller/DetectingTestController.java @@ -28,4 +28,12 @@ public ResponseEntity scoreTest( return ResponseEntity.ok(Response.of(CommonCode.GOOD_REQUEST, visionDetectingService.calculateCanvasScore(canvasId).getScoreValue())); } + @GetMapping("/score") + public ResponseEntity scoreTest2( + @RequestParam String filePath, + @RequestParam String visionName + ){ + return ResponseEntity.ok(Response.of(CommonCode.GOOD_REQUEST, visionDetectingService.calculateCanvasScore(filePath, visionName).getScoreValue())); + } + } diff --git a/src/main/java/com/siliconvalley/domain/google/service/VisionDetectingService.java b/src/main/java/com/siliconvalley/domain/google/service/VisionDetectingService.java index 47b41ad..bc6735d 100644 --- a/src/main/java/com/siliconvalley/domain/google/service/VisionDetectingService.java +++ b/src/main/java/com/siliconvalley/domain/google/service/VisionDetectingService.java @@ -35,6 +35,17 @@ public Score calculateCanvasScore(Long canvasId) { return Score.determineScore(detectionScore); } + public Score calculateCanvasScore(String filePath, String visionName) { + Map detectResult = visionService.detectLabels(filePath); + log.info(detectResult.size() + "개"); + if (detectResult.size() == 0 || detectResult.containsKey("Error")) {return Score.LOW;} + log.info(detectResult + "점"); + Float detectionScore = detectResult.get(visionName); + + return Score.determineScore(detectionScore); + } + + public Response testLabelDetecting(Long canvasId){ Canvas canvas = canvasFindDao.findById(canvasId); List results = new ArrayList<>(); diff --git a/src/main/java/com/siliconvalley/domain/sse/application/CanvasSseEmitterService.java b/src/main/java/com/siliconvalley/domain/sse/application/CanvasSseEmitterService.java index 41684a3..a628863 100644 --- a/src/main/java/com/siliconvalley/domain/sse/application/CanvasSseEmitterService.java +++ b/src/main/java/com/siliconvalley/domain/sse/application/CanvasSseEmitterService.java @@ -3,10 +3,12 @@ import com.siliconvalley.domain.sse.repository.CanvasSseEmitterRepository; import com.siliconvalley.domain.sse.repository.DemoCanvasSseEmitterRepository; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; @Service +@Slf4j @RequiredArgsConstructor public class CanvasSseEmitterService { @@ -21,7 +23,7 @@ public SseEmitter connect(Long profileId) { canvasSseEmitterRepository.delete(profileId); } SseEmitter sseEmitter = canvasSseEmitterCreater.createEmitter(profileId); - + log.info(profileId + "번 유저 SSE 연결 완료"); return sseEmitter; } diff --git a/src/main/java/com/siliconvalley/domain/sse/application/ConvertResultSender.java b/src/main/java/com/siliconvalley/domain/sse/application/ConvertResultSender.java index eed7035..2f84fb5 100644 --- a/src/main/java/com/siliconvalley/domain/sse/application/ConvertResultSender.java +++ b/src/main/java/com/siliconvalley/domain/sse/application/ConvertResultSender.java @@ -3,6 +3,7 @@ import com.siliconvalley.domain.sse.repository.CanvasSseEmitterRepository; import com.siliconvalley.domain.sse.repository.DemoCanvasSseEmitterRepository; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; @@ -10,6 +11,7 @@ @Component @RequiredArgsConstructor +@Slf4j public class ConvertResultSender { private final CanvasSseEmitterRepository canvasSseEmitterRepository; @@ -21,7 +23,9 @@ public void send(SseEmitter sseEmitter, Object data, Long profileId, String even .name(eventName) .data(data) .reconnectTime(0L)); // 재연결 시도 + log.info(profileId + "번 프로필 SSE 전송 성공"); } catch (IOException exception) { + log.info("에러 발생, SSE 삭제"); canvasSseEmitterRepository.delete(profileId); throw new RuntimeException("SSE Connect Fail"); }