55import capstone .SportyUp .SportyUp_Server .apiPayload .code .status .ErrorStatus ;
66import capstone .SportyUp .SportyUp_Server .aws .s3 .S3Uploader ;
77import capstone .SportyUp .SportyUp_Server .converter .AnalyzeConverter ;
8- import capstone .SportyUp .SportyUp_Server .domain .AnalyzeEntity ;
9- import capstone .SportyUp .SportyUp_Server .domain .Game ;
10- import capstone .SportyUp .SportyUp_Server .domain .Sports ;
11- import capstone .SportyUp .SportyUp_Server .domain .User ;
8+ import capstone .SportyUp .SportyUp_Server .domain .*;
129import capstone .SportyUp .SportyUp_Server .domain .enums .PoseScore ;
1310import capstone .SportyUp .SportyUp_Server .repository .AnalyzeRepository ;
1411import capstone .SportyUp .SportyUp_Server .repository .GameRepository ;
1512import capstone .SportyUp .SportyUp_Server .repository .UserRepository ;
13+ import capstone .SportyUp .SportyUp_Server .repository .UserSportsRepository ;
1614import capstone .SportyUp .SportyUp_Server .web .DTO .AnalyzeDTO .AnalyzeRequestDTO ;
1715import capstone .SportyUp .SportyUp_Server .web .DTO .AnalyzeDTO .AnalyzeResponseDTO ;
1816import lombok .RequiredArgsConstructor ;
@@ -37,6 +35,7 @@ public class AnalyzeCommandServiceImpl implements AnalyzeCommandService {
3735 private final GameRepository gameRepository ;
3836 private final AnalyzeRepository analyzeRepository ;
3937 private final UserRepository userRepository ;
38+ private final UserSportsRepository userSportsRepository ;
4039
4140 @ Value ("${flask}" )
4241 private String FLASK_SERVER_URL ; // Flask 서버 URL (예시: http://localhost:5000)
@@ -54,6 +53,7 @@ public AnalyzeResponseDTO.AnalyzeResultDTO requestAnalyze(Long userId, Long game
5453 //분석할 영상이 속한 게임 찾기
5554 Game game = gameRepository .findById (gameId ).orElseThrow (()->new GameHandler (ErrorStatus .GAME_NOT_FOUND ));
5655 Sports sports = game .getSports ();
56+ UserSports userSports = userSportsRepository .findTop1ByUserAndSports (user ,sports );
5757 //영상찾기
5858 MultipartFile uploadedFile = request .getFile ();
5959
@@ -73,24 +73,27 @@ public AnalyzeResponseDTO.AnalyzeResultDTO requestAnalyze(Long userId, Long game
7373 } catch (IOException e ){
7474 throw new RuntimeException ("S3 업로드 실패" , e );
7575 }
76+ String userLevel = userSports .getLevel ().toString ();
7677
7778 //Flask 요청
78- Map <String , Object > flaskResponse = processFileWithFlask (sports ,uploadedVideoUrl ,analyzedKey );
79+ Map <String , Object > flaskResponse = processFileWithFlask (sports ,uploadedVideoUrl ,analyzedKey , userLevel );
7980
8081 //Flask 응답
8182 String videoUrl = (String ) flaskResponse .get ("video_url" );
8283 String recommendPose = (String ) flaskResponse .get ("recommend" );
8384 String goodPoint = (String ) flaskResponse .get ("good" );
8485 String badPoint = (String ) flaskResponse .get ("bad" );
85- Double score = ((Number ) flaskResponse .get ("score" )).doubleValue ();
86+ PoseScore poseScore = PoseScore .valueOf (flaskResponse .get ("grade" ).toString ());
87+ Integer score = ((Number ) flaskResponse .get ("score" )).intValue ();
8688
87- PoseScore poseScore = evaluateScore (score .intValue ());
89+ // PoseScore poseScore = evaluateScore(score.intValue());
8890
8991 //AnalyzeEntity 저장
9092 AnalyzeEntity newAnalyzeEntity = AnalyzeEntity .builder ()
9193 .user (user )
9294 .game (game )
9395 .videoUrl (videoUrl )
96+ .score (score )
9497 .poseScore (poseScore )
9598 .goodPoint (goodPoint )
9699 .badPoint (badPoint )
@@ -103,12 +106,13 @@ public AnalyzeResponseDTO.AnalyzeResultDTO requestAnalyze(Long userId, Long game
103106 }
104107
105108
106- private Map <String , Object > sendFileToFlask (String videoUrl , String analyzedKey ) throws IOException {
109+ private Map <String , Object > sendFileToFlask (String videoUrl , String analyzedKey , String userLevel ) throws IOException {
107110 RestTemplate restTemplate = new RestTemplate ();
108111
109112 // Flask 서버에 보낼 파일 설정
110113 MultiValueMap <String , Object > body = new LinkedMultiValueMap <>();
111114 body .add ("video_url" , videoUrl );
115+ body .add ("user_level" , userLevel );
112116 body .add ("analyzed_key" , analyzedKey );
113117
114118 // HTTP 요청 헤더 설정
@@ -149,10 +153,10 @@ private Map<String, Object> sendFileToFlask(String videoUrl, String analyzedKey)
149153// }
150154// }
151155
152- private Map <String , Object > processFileWithFlask (Sports sports , String videoUrl , String analyzedKey ) {
156+ private Map <String , Object > processFileWithFlask (Sports sports , String videoUrl , String analyzedKey , String userLevel ) {
153157 if ("볼링" .equals (sports .getName ())) {
154158 try {
155- return sendFileToFlask (videoUrl , analyzedKey );
159+ return sendFileToFlask (videoUrl , analyzedKey , userLevel );
156160 } catch (IOException e ) {
157161 throw new RuntimeException ("Flask 처리 실패" , e );
158162 }
@@ -168,9 +172,9 @@ private Map<String, Object> processFileWithFlask(Sports sports, String videoUrl,
168172 );
169173 }
170174
171- private PoseScore evaluateScore (int score ) {
172- if (score <= 33 ) return PoseScore .BAD ;
173- if (score <= 66 ) return PoseScore .GOOD ;
174- return PoseScore .EXCELLENT ;
175- }
175+ // private PoseScore evaluateScore(int score) {
176+ // if (score <= 33) return PoseScore.BAD;
177+ // if (score <= 66) return PoseScore.GOOD;
178+ // return PoseScore.EXCELLENT;
179+ // }
176180}
0 commit comments