From faa77160afda8a85a2f7a67102b76d71edf11764 Mon Sep 17 00:00:00 2001 From: johngreen Date: Thu, 30 Apr 2026 06:34:48 +0900 Subject: [PATCH] =?UTF-8?q?debug:=20GlobalExceptionHandler=20=EC=97=90=20r?= =?UTF-8?q?oot=20cause=20=EC=9E=84=EC=8B=9C=20=EB=85=B8=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit POST /api/ai-agents 가 500 만 반환하고 backend pod logs 직접 접근이 불가하여 진단 불가. 임시로 응답 message 에 [DEBUG] prefix + 예외 클래스명/메시지/cause 를 포함시켜 ULTRAQA 사이클로 root cause 파악. ⚠️ TEMPORARY — 안정화 후 다음 commit 에서 즉시 원복. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../main/java/com/erp/config/GlobalExceptionHandler.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/backend-spring/src/main/java/com/erp/config/GlobalExceptionHandler.java b/backend-spring/src/main/java/com/erp/config/GlobalExceptionHandler.java index 1085973e..0650f57a 100644 --- a/backend-spring/src/main/java/com/erp/config/GlobalExceptionHandler.java +++ b/backend-spring/src/main/java/com/erp/config/GlobalExceptionHandler.java @@ -33,7 +33,13 @@ public class GlobalExceptionHandler { public ResponseEntity> handleException(Exception e, HttpServletRequest request) { log.error("Unhandled exception", e); + // QA 진단 임시 — root cause class + message 노출 (안정화 후 원복 예정) + String detail = e.getClass().getSimpleName() + ": " + (e.getMessage() != null ? e.getMessage() : "no message"); + Throwable cause = e.getCause(); + if (cause != null) { + detail += " | caused by " + cause.getClass().getSimpleName() + ": " + cause.getMessage(); + } return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) - .body(ApiResponse.error("서버 내부 오류가 발생했습니다.", request.getRequestURI())); + .body(ApiResponse.error("[DEBUG] " + detail, request.getRequestURI())); } }