From 1ae6cadd8d5dc8e73fdc1b3476d2c189e37f559a Mon Sep 17 00:00:00 2001 From: lsh9672 Date: Mon, 16 Jun 2025 15:54:48 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20=EB=B6=84=EC=84=9Dapi=20=EA=B0=9C?= =?UTF-8?q?=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../analytics/biz/service/AnalyticsService.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/analytics/src/main/java/com/ktds/hi/analytics/biz/service/AnalyticsService.java b/analytics/src/main/java/com/ktds/hi/analytics/biz/service/AnalyticsService.java index 079d054..068eda1 100644 --- a/analytics/src/main/java/com/ktds/hi/analytics/biz/service/AnalyticsService.java +++ b/analytics/src/main/java/com/ktds/hi/analytics/biz/service/AnalyticsService.java @@ -34,7 +34,7 @@ public class AnalyticsService implements AnalyticsUseCase { private final EventPort eventPort; @Override - @Cacheable(value = "storeAnalytics", key = "#storeId") + // @Cacheable(value = "storeAnalytics", key = "#storeId") public StoreAnalyticsResponse getStoreAnalytics(Long storeId) { log.info("매장 분석 데이터 조회 시작: storeId={}", storeId); @@ -88,11 +88,23 @@ public class AnalyticsService implements AnalyticsUseCase { // ... 나머지 메서드들은 이전과 동일 ... @Override - @Cacheable(value = "aiFeedback", key = "#storeId") + // @Cacheable(value = "aiFeedback", key = "#storeId") public AiFeedbackDetailResponse getAIFeedbackDetail(Long storeId) { log.info("AI 피드백 상세 조회 시작: storeId={}", storeId); try { + // 1. 캐시에서 먼저 확인 (타입 안전성 보장) + String cacheKey = "ai_feedback_detail:store:" + storeId; + var cachedResult = cachePort.getAnalyticsCache(cacheKey); + if (cachedResult.isPresent()) { + Object cached = cachedResult.get(); + if (cached instanceof AiFeedbackDetailResponse) { + log.info("캐시에서 AI 피드백 반환: storeId={}", storeId); + return (AiFeedbackDetailResponse) cached; + } + log.debug("AI 피드백 캐시 데이터 타입 불일치, DB에서 조회: storeId={}", storeId); + } + // 1. 기존 AI 피드백 조회 var aiFeedback = analyticsPort.findAIFeedbackByStoreId(storeId);