diff --git a/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/converter/ModelConverter.java b/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/converter/ModelConverter.java index 060881c..477c446 100644 --- a/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/converter/ModelConverter.java +++ b/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/converter/ModelConverter.java @@ -21,8 +21,9 @@ public ModelScore toEntity(User userEntity, Song songEntity, String recordedFile public ModelScoreResponse toResponse(String recordedFilename, ScoreResult scoreResult) { final Integer score = ConvertUtils.stringToInteger(scoreResult.getNormalizedScore()); - final Double similarity = ConvertUtils.stringToDouble(scoreResult.getCombinedSimilarity()); + final Double tune = ConvertUtils.stringToDouble(scoreResult.getMeanChromaSimilarity()); + final Double similarity = ConvertUtils.stringToDouble(scoreResult.getMeanMfccSimilarity()); - return ModelScoreResponse.of(recordedFilename, score, similarity); + return ModelScoreResponse.of(recordedFilename, score, tune, similarity); } } diff --git a/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/dto/response/ModelScoreListResponse.java b/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/dto/response/ModelScoreListResponse.java index 0033d53..863ad4b 100644 --- a/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/dto/response/ModelScoreListResponse.java +++ b/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/dto/response/ModelScoreListResponse.java @@ -14,6 +14,7 @@ public class ModelScoreListResponse { private Long id; private SongDto song; private Integer score; + private Double tune; private Double similarity; private LocalDateTime createdAt; private LocalDateTime updatedAt; @@ -22,6 +23,7 @@ public static ModelScoreListResponse of( Long id, SongDto song, Integer score, + Double tune, Double similarity, LocalDateTime createdAt, LocalDateTime updatedAt @@ -30,6 +32,7 @@ public static ModelScoreListResponse of( id, song, score, + tune, similarity, createdAt, updatedAt diff --git a/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/dto/response/ModelScoreResponse.java b/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/dto/response/ModelScoreResponse.java index c6b65fe..b47d48d 100644 --- a/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/dto/response/ModelScoreResponse.java +++ b/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/dto/response/ModelScoreResponse.java @@ -8,13 +8,15 @@ public class ModelScoreResponse { String recordedFilename; Integer score; + Double tune; Double similarity; - public static ModelScoreResponse of(String recordedFilename, Integer score, Double similarity) { + public static ModelScoreResponse of(String recordedFilename, Integer score, Double tune, Double similarity) { return new ModelScoreResponse( recordedFilename, score, + tune, similarity ); } diff --git a/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/service/ModelScoreService.java b/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/service/ModelScoreService.java index c333244..6ea4980 100644 --- a/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/service/ModelScoreService.java +++ b/core/core-api/src/main/java/com/nerd/favorite18/core/api/model/service/ModelScoreService.java @@ -37,7 +37,7 @@ public List getScoreList(UserDto userDto) { User userEntity = userRepository.findFirstByIdAndStatusOrderByIdDesc(userDto.getId(), UserStatus.ACTIVE) .orElseThrow(() -> new CoreApiException(ErrorType.USER_NOT_FOUND)); - final List projections = modelScoreRepository.findAllByUserOrderByCreatedAtDesc(userEntity); + final List projections = modelScoreRepository.findAllByUserAndScoreIsNotNullOrderByCreatedAtDesc(userEntity); return projections.stream().map(projection -> { SongProjection song = projection.getSong(); @@ -46,6 +46,7 @@ public List getScoreList(UserDto userDto) { projection.getId(), SongDto.of(song.getId(), song.getTitle(), song.getArtist(), song.getAlbumPictureUrl()), projection.getScore(), + projection.getTune(), projection.getSimilarity(), projection.getCreatedAt(), projection.getUpdatedAt() @@ -70,12 +71,13 @@ public Long saveRecord(UserDto userDto, Long songId, String recordedFilename) { @Transactional public void saveScore(Long modelScoreId, ScoreResult scoreResult, long analysisTime) { final Integer score = ConvertUtils.stringToInteger(scoreResult.getNormalizedScore()); - final Double similarity = ConvertUtils.stringToDouble(scoreResult.getCombinedSimilarity()); + final Double tune = ConvertUtils.stringToDouble(scoreResult.getMeanChromaSimilarity()); + final Double similarity = ConvertUtils.stringToDouble(scoreResult.getMeanMfccSimilarity()); final ModelScore entity = modelScoreRepository.findById(modelScoreId) .orElseThrow(() -> new CoreApiException(ErrorType.NOT_FOUND)); - entity.applyUpdates(score, similarity, analysisTime); + entity.applyUpdates(score, tune, similarity, analysisTime); modelScoreRepository.save(entity); } diff --git a/storage/db-core/src/main/java/com/nerd/favorite18/storage/db/core/model/entity/ModelScore.java b/storage/db-core/src/main/java/com/nerd/favorite18/storage/db/core/model/entity/ModelScore.java index 683fa76..e000244 100644 --- a/storage/db-core/src/main/java/com/nerd/favorite18/storage/db/core/model/entity/ModelScore.java +++ b/storage/db-core/src/main/java/com/nerd/favorite18/storage/db/core/model/entity/ModelScore.java @@ -37,21 +37,25 @@ public class ModelScore extends BaseEntity { @Comment("분석 대상 이름") private String recordedFilename; - @Comment("분석 점수") + @Comment("총 점수") private Integer score; - @Comment("분석 유사도") + @Comment("음정 분석치") + private Double tune; + + @Comment("유사도 분석치") private Double similarity; @Comment("분석 소요 시간") private long analysisTime; @Builder - public ModelScore(User user, Song song, String recordedFilename, Integer score, Double similarity, long analysisTime) { + public ModelScore(User user, Song song, String recordedFilename, Integer score, Double tune, Double similarity, long analysisTime) { this.user = user; this.song = song; this.recordedFilename = recordedFilename; this.score = score; + this.tune = tune; this.similarity = similarity; this.analysisTime = analysisTime; } @@ -59,6 +63,9 @@ public ModelScore(User user, Song song, String recordedFilename, Integer score, public void updateScore(Integer score) { this.score = score; } + public void updateTune(Double tune) { + this.tune = tune; + } public void updateSimilarity(Double similarity) { this.similarity = similarity; @@ -68,11 +75,15 @@ public void updateAnalysisTime(long analysisTime) { this.analysisTime = analysisTime; } - public void applyUpdates(Integer score, Double similarity, long analysisTime) { + public void applyUpdates(Integer score, Double tune, Double similarity, long analysisTime) { if (!ObjectUtils.isEmpty(score)) { updateScore(score); } + if (!ObjectUtils.isEmpty(tune)) { + updateTune(tune); + } + if (!ObjectUtils.isEmpty(similarity)) { updateSimilarity(similarity); } diff --git a/storage/db-core/src/main/java/com/nerd/favorite18/storage/db/core/model/projection/ModelScoreProjection.java b/storage/db-core/src/main/java/com/nerd/favorite18/storage/db/core/model/projection/ModelScoreProjection.java index b35db48..6e2340c 100644 --- a/storage/db-core/src/main/java/com/nerd/favorite18/storage/db/core/model/projection/ModelScoreProjection.java +++ b/storage/db-core/src/main/java/com/nerd/favorite18/storage/db/core/model/projection/ModelScoreProjection.java @@ -6,5 +6,6 @@ public interface ModelScoreProjection extends BaseProjection { SongProjection getSong(); Integer getScore(); + Double getTune(); Double getSimilarity(); } diff --git a/storage/db-core/src/main/java/com/nerd/favorite18/storage/db/core/model/repository/ModelScoreRepository.java b/storage/db-core/src/main/java/com/nerd/favorite18/storage/db/core/model/repository/ModelScoreRepository.java index 91a1f14..ecaa466 100644 --- a/storage/db-core/src/main/java/com/nerd/favorite18/storage/db/core/model/repository/ModelScoreRepository.java +++ b/storage/db-core/src/main/java/com/nerd/favorite18/storage/db/core/model/repository/ModelScoreRepository.java @@ -8,5 +8,5 @@ import java.util.List; public interface ModelScoreRepository extends JpaRepository { - List findAllByUserOrderByCreatedAtDesc(User userEntity); + List findAllByUserAndScoreIsNotNullOrderByCreatedAtDesc(User userEntity); }