From f07c979f225919b48bc22532f201811630aacef6 Mon Sep 17 00:00:00 2001 From: Enble Date: Sat, 13 Sep 2025 17:13:32 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix!:=20=EC=A0=95=EB=B3=B4=EA=B0=80=20?= =?UTF-8?q?=EB=85=B8=EC=B6=9C=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20logging=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20Entity,?= =?UTF-8?q?=20DTO=EC=97=90=EC=84=9C=EC=9D=98=20ToString=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mey/backend/domain/auth/dto/LoginRequest.java | 2 ++ .../com/mey/backend/domain/auth/dto/SignupRequest.java | 2 ++ .../domain/place/service/PlaceTourApiClient.java | 6 +++--- .../mey/backend/domain/user/dto/UserInfoResponse.java | 2 ++ .../backend/domain/user/dto/UserInfoUpdateRequest.java | 2 ++ .../java/com/mey/backend/domain/user/entity/User.java | 1 + .../domain/user/service/UserDetailsServiceImpl.java | 2 +- src/main/resources/application-dev.yml | 7 +++++-- src/main/resources/application-prod.yml | 10 ++++++++-- 9 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/mey/backend/domain/auth/dto/LoginRequest.java b/src/main/java/com/mey/backend/domain/auth/dto/LoginRequest.java index 0b9778a..b024604 100644 --- a/src/main/java/com/mey/backend/domain/auth/dto/LoginRequest.java +++ b/src/main/java/com/mey/backend/domain/auth/dto/LoginRequest.java @@ -3,9 +3,11 @@ import jakarta.validation.constraints.NotBlank; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.ToString; @Getter @NoArgsConstructor +@ToString(exclude = {"password", "email"}) public class LoginRequest { @NotBlank(message = "이메일은 필수입니다") diff --git a/src/main/java/com/mey/backend/domain/auth/dto/SignupRequest.java b/src/main/java/com/mey/backend/domain/auth/dto/SignupRequest.java index f8b1d77..3225b36 100644 --- a/src/main/java/com/mey/backend/domain/auth/dto/SignupRequest.java +++ b/src/main/java/com/mey/backend/domain/auth/dto/SignupRequest.java @@ -5,9 +5,11 @@ import jakarta.validation.constraints.Size; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.ToString; @Getter @NoArgsConstructor +@ToString(exclude = {"password", "email"}) public class SignupRequest { @NotBlank(message = "닉네임은 필수입니다") diff --git a/src/main/java/com/mey/backend/domain/place/service/PlaceTourApiClient.java b/src/main/java/com/mey/backend/domain/place/service/PlaceTourApiClient.java index e1dee30..46ab3ee 100644 --- a/src/main/java/com/mey/backend/domain/place/service/PlaceTourApiClient.java +++ b/src/main/java/com/mey/backend/domain/place/service/PlaceTourApiClient.java @@ -98,7 +98,7 @@ public List fetchRelatedPlaces(double latitude, double longi JsonNode items = om.readTree(body).at("/response/body/items/item"); if (items.isArray()) { - log.info("📍 locationBasedList2 {}건 lat={}, lon={}", items.size(), latitude, longitude); + log.info("📍 locationBasedList2 {}건 조회됨", items.size()); for (JsonNode it : items) { String address = it.path("addr1").asText(""); @@ -115,12 +115,12 @@ public List fetchRelatedPlaces(double latitude, double longi )); } } else { - log.warn("⚠️ locationBasedList2 결과 없음 lat={}, lon={}", latitude, longitude); + log.warn("⚠️ locationBasedList2 결과 없음"); } return out; } catch (Exception e) { - log.error("❌ locationBasedList2 호출 실패 lat={}, lon={}", latitude, longitude, e); + log.error("❌ locationBasedList2 호출 실패", e); } return List.of(); } diff --git a/src/main/java/com/mey/backend/domain/user/dto/UserInfoResponse.java b/src/main/java/com/mey/backend/domain/user/dto/UserInfoResponse.java index e4a0a24..e6affb0 100644 --- a/src/main/java/com/mey/backend/domain/user/dto/UserInfoResponse.java +++ b/src/main/java/com/mey/backend/domain/user/dto/UserInfoResponse.java @@ -4,9 +4,11 @@ import com.mey.backend.domain.user.entity.User; import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.ToString; @Getter @AllArgsConstructor +@ToString(exclude = {"email"}) public class UserInfoResponse { private Long id; private String nickname; diff --git a/src/main/java/com/mey/backend/domain/user/dto/UserInfoUpdateRequest.java b/src/main/java/com/mey/backend/domain/user/dto/UserInfoUpdateRequest.java index 34ecd75..617da97 100644 --- a/src/main/java/com/mey/backend/domain/user/dto/UserInfoUpdateRequest.java +++ b/src/main/java/com/mey/backend/domain/user/dto/UserInfoUpdateRequest.java @@ -3,9 +3,11 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.ToString; @Getter @NoArgsConstructor +@ToString(exclude = {"password", "email"}) @Schema(description = "사용자 정보 수정 요청") public class UserInfoUpdateRequest { diff --git a/src/main/java/com/mey/backend/domain/user/entity/User.java b/src/main/java/com/mey/backend/domain/user/entity/User.java index ec54aef..b351a1d 100644 --- a/src/main/java/com/mey/backend/domain/user/entity/User.java +++ b/src/main/java/com/mey/backend/domain/user/entity/User.java @@ -14,6 +14,7 @@ @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) +@ToString(exclude = {"password", "email"}) public class User implements UserDetails { @Id diff --git a/src/main/java/com/mey/backend/domain/user/service/UserDetailsServiceImpl.java b/src/main/java/com/mey/backend/domain/user/service/UserDetailsServiceImpl.java index db3acc0..16ce40a 100644 --- a/src/main/java/com/mey/backend/domain/user/service/UserDetailsServiceImpl.java +++ b/src/main/java/com/mey/backend/domain/user/service/UserDetailsServiceImpl.java @@ -16,6 +16,6 @@ public class UserDetailsServiceImpl implements UserDetailsService { @Override public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException { return userRepository.findByEmail(email) - .orElseThrow(() -> new UsernameNotFoundException("User not found: " + email)); + .orElseThrow(() -> new UsernameNotFoundException("User not found")); } } \ No newline at end of file diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index f599207..99dd836 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -24,7 +24,10 @@ spring: logging: level: - com.mey.backend: DEBUG - org.springframework.web: DEBUG + com.mey.backend: INFO + org.springframework.web: WARN + org.springframework.security: WARN org.hibernate.tool.schema.internal: warn org.hibernate.sql: warn + org.springframework.web.servlet.DispatcherServlet: ERROR + org.springframework.security.web.FilterChainProxy: ERROR diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 8337ae1..1c9ffa4 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -19,5 +19,11 @@ spring: logging: level: - com.mey.backend: INFO - org.springframework.web: WARN + com.mey.backend: WARN + org.springframework.web: ERROR + org.springframework.security: ERROR + org.hibernate.sql: ERROR + org.springframework.web.servlet.DispatcherServlet: ERROR + org.springframework.security.web.FilterChainProxy: ERROR + org.springframework.boot.autoconfigure: ERROR + root: WARN From 70060b2e85ab47d20dc4c1b4dc6e9d0470c29286 Mon Sep 17 00:00:00 2001 From: Enble Date: Sat, 13 Sep 2025 17:17:52 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix!:=20chatbot=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=BF=BC=EB=A6=AC=EA=B0=80=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=97=90=20=EB=82=A8=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mey/backend/domain/chatbot/controller/ChatController.java | 2 +- .../java/com/mey/backend/domain/chatbot/dto/ChatRequest.java | 2 ++ .../chatbot/repository/InMemoryDocumentVectorStore.java | 4 ++-- .../com/mey/backend/domain/chatbot/service/ChatService.java | 2 +- .../mey/backend/domain/chatbot/service/ContextExtractor.java | 2 +- .../mey/backend/global/exception/GlobalExceptionHandler.java | 2 +- 6 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/mey/backend/domain/chatbot/controller/ChatController.java b/src/main/java/com/mey/backend/domain/chatbot/controller/ChatController.java index 90e4259..b9e8503 100644 --- a/src/main/java/com/mey/backend/domain/chatbot/controller/ChatController.java +++ b/src/main/java/com/mey/backend/domain/chatbot/controller/ChatController.java @@ -32,7 +32,7 @@ public class ChatController { ) @PostMapping("/query") public CommonResponse sendMessage(@RequestBody ChatRequest request) { - log.info("chat request: {}", request.getQuery()); + log.info("챗봇 요청 처리 시작"); try { ChatResponse response = chatService.processUserQuery(request); diff --git a/src/main/java/com/mey/backend/domain/chatbot/dto/ChatRequest.java b/src/main/java/com/mey/backend/domain/chatbot/dto/ChatRequest.java index c4f3c41..506cf80 100644 --- a/src/main/java/com/mey/backend/domain/chatbot/dto/ChatRequest.java +++ b/src/main/java/com/mey/backend/domain/chatbot/dto/ChatRequest.java @@ -6,12 +6,14 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.ToString; @Schema(description = "채팅 요청 DTO") @Getter @Builder(toBuilder = true) @NoArgsConstructor @AllArgsConstructor +@ToString(exclude = {"query"}) public class ChatRequest { @Schema(description = "사용자 질문", example = "k-pop 루트 추천해줘") @NotBlank diff --git a/src/main/java/com/mey/backend/domain/chatbot/repository/InMemoryDocumentVectorStore.java b/src/main/java/com/mey/backend/domain/chatbot/repository/InMemoryDocumentVectorStore.java index 7971ec6..bb6530e 100644 --- a/src/main/java/com/mey/backend/domain/chatbot/repository/InMemoryDocumentVectorStore.java +++ b/src/main/java/com/mey/backend/domain/chatbot/repository/InMemoryDocumentVectorStore.java @@ -117,7 +117,7 @@ public void addDocumentFile(String id, File file, Map metadata) * @return 유사도 순으로 정렬된 검색 결과 목록 */ public List similaritySearch(String query, int maxResults) { - log.debug("유사도 검색 시작 - 질의: '{}', 최대 결과: {}", query, maxResults); + log.debug("유사도 검색 시작 - 최대 결과: {}", maxResults); try { // 검색 요청 구성 @@ -139,7 +139,7 @@ public List similaritySearch(String query, int maxResults) .map(this::mapToSearchResult) .collect(Collectors.toList()); } catch (Exception e) { - log.error("유사도 검색 실패 - 질의: '{}'", query, e); + log.error("유사도 검색 실패", e); throw new SimilarityProcessingException(); } } diff --git a/src/main/java/com/mey/backend/domain/chatbot/service/ChatService.java b/src/main/java/com/mey/backend/domain/chatbot/service/ChatService.java index 73c8776..5027eed 100644 --- a/src/main/java/com/mey/backend/domain/chatbot/service/ChatService.java +++ b/src/main/java/com/mey/backend/domain/chatbot/service/ChatService.java @@ -88,7 +88,7 @@ public void initializeVectorStore() { * 상태 기반 대화 처리를 지원하며, 세션 연속성을 보장합니다. */ public ChatResponse processUserQuery(ChatRequest request) { - log.info("Processing user query: {} (language: {})", request.getQuery(), request.getLanguage()); + log.info("사용자 쿼리 처리 시작 (언어: {})", request.getLanguage()); // 1. 언어 검증 및 설정 String validatedLanguage = languageService.validateAndGetLanguage(request.getLanguage()); diff --git a/src/main/java/com/mey/backend/domain/chatbot/service/ContextExtractor.java b/src/main/java/com/mey/backend/domain/chatbot/service/ContextExtractor.java index 34bcd23..0c2b203 100644 --- a/src/main/java/com/mey/backend/domain/chatbot/service/ContextExtractor.java +++ b/src/main/java/com/mey/backend/domain/chatbot/service/ContextExtractor.java @@ -228,7 +228,7 @@ private ChatContext mergeContexts(ChatContext existingContext, ChatContext extra * AI 파싱 실패 시 fallback 로직 */ private ChatContext extractContextFallback(String query, ChatContext existingContext) { - log.info("Using fallback context extraction for query: {}", query); + log.info("fallback context extraction 사용"); ChatContext.ChatContextBuilder builder = existingContext != null ? existingContext.toBuilder() : ChatContext.builder(); diff --git a/src/main/java/com/mey/backend/global/exception/GlobalExceptionHandler.java b/src/main/java/com/mey/backend/global/exception/GlobalExceptionHandler.java index 70880f9..066528b 100644 --- a/src/main/java/com/mey/backend/global/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/mey/backend/global/exception/GlobalExceptionHandler.java @@ -86,7 +86,7 @@ public ResponseEntity handleGeneral(GeneralException generalException, H public ResponseEntity handleOthers(Exception e, WebRequest request) { CommonResponse body = CommonResponse.onFailure(ErrorStatus.INTERNAL_SERVER_ERROR.getCode(), ErrorStatus.INTERNAL_SERVER_ERROR.getMessage(), - e.getMessage()); + null); return super.handleExceptionInternal(e, body, HttpHeaders.EMPTY, ErrorStatus.INTERNAL_SERVER_ERROR.getHttpStatus(), request);