From cd4eeb6fc0e4ae09660d4e90c61c08391fde1783 Mon Sep 17 00:00:00 2001 From: Roy Date: Mon, 14 Sep 2026 13:46:17 +0900 Subject: [PATCH] =?UTF-8?q?Sentry=20=EB=B0=B0=EC=B9=98=EC=97=90=EC=84=9C?= =?UTF-8?q?=20=EB=AA=A8=EB=93=A0=20=ED=96=89=EB=8F=99=EC=9D=84=20=EB=B9=A0?= =?UTF-8?q?=EC=A7=90=EC=97=86=EC=9D=B4=20=EC=9D=BD=EA=B2=8C=20=ED=95=9C?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Constraint: Sentry OR 검색식이 일부 analytics_event를 누락한다 Rejected: 이벤트별 개별 요청 | 이벤트 수만큼 외부 호출이 증가한다 Confidence: high Scope-risk: narrow Directive: 배치 검색은 검증된 배열 구문을 유지한다 Tested: SentryClientTest, 운영 Sentry 배열 검색 200 및 3개 이벤트 반환 Not-tested: Orca 런타임 연결 실패로 브라우저 화면은 미확인 --- .../swyp/picke/domain/admin/analytics/SentryClient.java | 8 +++----- .../picke/domain/admin/analytics/SentryClientTest.java | 1 + 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/swyp/picke/domain/admin/analytics/SentryClient.java b/src/main/java/com/swyp/picke/domain/admin/analytics/SentryClient.java index 55174b3..1ae6ab9 100644 --- a/src/main/java/com/swyp/picke/domain/admin/analytics/SentryClient.java +++ b/src/main/java/com/swyp/picke/domain/admin/analytics/SentryClient.java @@ -376,11 +376,9 @@ private URI analyticsEventCatalogUri(String project, LocalDate from, LocalDate t private URI analyticsEventTimeseriesUri( String project, List events, LocalDate from, LocalDate to) { - String query = events.stream() - .map(event -> "analytics_event:\"" + event.replace("\"", "\\\"") + "\"") - .reduce((left, right) -> left + " OR " + right) - .map(value -> events.size() > 1 ? "(" + value + ")" : value) - .orElse("has:analytics_event"); + String query = events.isEmpty() + ? "has:analytics_event" + : ANALYTICS_EVENT_FIELD + ":[" + String.join(",", events) + "]"; return UriComponentsBuilder.fromUriString(baseUrl) .path("/api/0/organizations/{organization}/events-stats/") .queryParam("project", project) diff --git a/src/test/java/com/swyp/picke/domain/admin/analytics/SentryClientTest.java b/src/test/java/com/swyp/picke/domain/admin/analytics/SentryClientTest.java index 2336945..45fea6d 100644 --- a/src/test/java/com/swyp/picke/domain/admin/analytics/SentryClientTest.java +++ b/src/test/java/com/swyp/picke/domain/admin/analytics/SentryClientTest.java @@ -295,6 +295,7 @@ void groupsEveryAnalyticsEventLikeMixpanel() { assertThat(transport.uris).anyMatch(uri -> uri.getPath().endsWith("/events-stats/") && uri.getQuery().contains("field=analytics_event") && uri.getQuery().contains("topEvents=2") + && uri.getQuery().contains("query=analytics_event:[ui_action,sign_up]") && uri.getQuery().contains("sort=analytics_event") && uri.getQuery().contains("partial=1") && uri.getQuery().contains("yAxis=count_unique(user)"));