feat : 리뷰 파싱 및 리뷰 조회 로직 수정

This commit is contained in:
lsh9672 2025-06-18 10:22:31 +09:00
parent 3a59c0f279
commit c8952d21c1
6 changed files with 542 additions and 527 deletions

View File

@ -522,8 +522,6 @@ public class AnalyticsService implements AnalyticsUseCase {
// 1. 리뷰 데이터 수집
List<String> reviewData = externalReviewPort.getRecentReviews(storeId, days);
log.info("review Data check ===> {}", reviewData);
if (reviewData.isEmpty()) {
log.warn("AI 피드백 생성을 위한 리뷰 데이터가 없습니다: storeId={}", storeId);
return createDefaultAIFeedback(storeId);
@ -533,6 +531,7 @@ public class AnalyticsService implements AnalyticsUseCase {
AiFeedback aiFeedback = aiServicePort.generateFeedback(reviewData);
// 3. 도메인 객체 속성 설정
AiFeedback completeAiFeedback = AiFeedback.builder()
.storeId(storeId)

View File

@ -88,6 +88,9 @@ public class ExternalReviewAdapter implements ExternalReviewPort {
.filter(review -> review.getCreatedAt() != null && review.getCreatedAt().isAfter(cutoffDate))
.map(ReviewListResponse::getContent)
.filter(content -> content != null && !content.trim().isEmpty())
.map(content -> content.replace("`", "")
.replace("\\", "")
.replace("\"", ""))
.collect(Collectors.toList());

View File

@ -80,7 +80,7 @@ public class ReviewInteractor implements CreateReviewUseCase, DeleteReviewUseCas
@Transactional(readOnly = true)
public List<ReviewListResponse> getStoreReviews(Long storeId, Integer page, Integer size) {
Pageable pageable = PageRequest.of(page != null ? page : 0, size != null ? size : 20);
Page<Review> reviews = reviewRepository.findReviewsByStoreId(storeId, pageable);
Page<Review> reviews = reviewRepository.findReviewsByStoreIdOrderByCreatedAtDesc(storeId, pageable);
return reviews.stream()
.filter(review -> review.getStatus() == ReviewStatus.ACTIVE)

View File

@ -27,7 +27,13 @@ public interface ReviewRepository {
* 매장 ID로 리뷰 목록 조회
*/
Page<Review> findReviewsByStoreId(Long storeId, Pageable pageable);
/**
* 매장 ID로 리뷰 목록 조회
*/
Page<Review> findReviewsByStoreIdOrderByCreatedAtDesc(Long storeId, Pageable pageable);
/**
* 회원 ID로 리뷰 목록 조회
*/

View File

@ -40,6 +40,13 @@ public class ReviewRepositoryAdapter implements ReviewRepository {
Page<ReviewEntity> entities = reviewJpaRepository.findByStoreIdAndStatus(storeId, ReviewStatus.ACTIVE, pageable);
return entities.map(this::toDomain);
}
@Override
public Page<Review> findReviewsByStoreIdOrderByCreatedAtDesc(Long storeId, Pageable pageable) {
Page<ReviewEntity> entities = reviewJpaRepository.findByStoreIdAndStatus(storeId, ReviewStatus.ACTIVE,
pageable);
return entities.map(this::toDomain);
}
@Override
public Page<Review> findReviewsByMemberId(Long memberId, Pageable pageable) {