From 339edd2f9446b5af4b24a0ec8c2146bf3e60e7a9 Mon Sep 17 00:00:00 2001 From: Hong Seokho Date: Mon, 10 Aug 2026 12:38:14 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20=EA=B2=80=EC=83=89=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=EB=8F=84=20=ED=8C=90=EC=A0=95=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=EC=99=80=20=EC=A3=BC=EC=84=9D=EC=9D=98=20=EA=B3=A0?= =?UTF-8?q?=EC=9C=A0=EB=AA=85=EC=82=AC=EB=A5=BC=20=EC=9D=BC=EB=B0=98?= =?UTF-8?q?=EB=AA=85=EC=82=AC=EB=A1=9C=20=EB=B0=94=EA=BE=BC=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #212가 문서에서 걷어낸 고유명사가 코드에는 그대로 남아 있었다. 같은 사건을 인용하는 자리라 문서만 바꾸면 코드와 어긋난다. #212가 고른 대체어를 그대로 써서 저장소 전체를 한 낱말로 맞춘다. - RelevanceJudgeSearchApiTests: 픽스처 본문·질의와 Javadoc 4곳 - RecordSearchService.judgeRelevance: Javadoc 예시 1줄(2회) 동작 변경은 없다. FastApiSearchStub이 질의 문자열과 무관하게 고정 매치·판정을 돌려주므로 단정 축(필터·재정렬 / 강등 / 전부 무관)이 문자열에 의존하지 않는다. BD-24와 BI-45는 #212가 이미 정리해 이 브랜치의 수정을 버리고 dev 판을 남겼다. Co-Authored-By: Claude Opus 5 (1M context) --- .../domain/search/service/RecordSearchService.java | 4 ++-- .../domain/search/RelevanceJudgeSearchApiTests.java | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/pinlog/pinlogback/domain/search/service/RecordSearchService.java b/src/main/java/com/pinlog/pinlogback/domain/search/service/RecordSearchService.java index 41c1f378..2b50d81d 100644 --- a/src/main/java/com/pinlog/pinlogback/domain/search/service/RecordSearchService.java +++ b/src/main/java/com/pinlog/pinlogback/domain/search/service/RecordSearchService.java @@ -224,8 +224,8 @@ private List applyConfidenceGate( /** * 검색 결과 LLM 관련도 재판정(4번째 신호). 문장형 질의에 포함된 고유명사처럼 재작성·문자열 - * 검색·재정렬 세 신호 모두의 사각지대를(예: "싸피 다녔던 헬스장"에서 본문에 "싸피"가 그대로 - * 있는 기록이 벡터 유사도만으로는 밀리는 경우) 이 신호가 메운다. 신호는 {@code matches}· + * 검색·재정렬 세 신호 모두의 사각지대를(예: "부트캠프 다녔던 헬스장"에서 본문에 "부트캠프"가 + * 그대로 있는 기록이 벡터 유사도만으로는 밀리는 경우) 이 신호가 메운다. 신호는 {@code matches}· * {@code verified}·{@code matchedContexts}가 전부 갖춰진 뒤 마지막에 붙는다 — 그래야 * 3신호 병합까지 끝난 진짜 최종 후보를 LLM이 본다. * diff --git a/src/test/java/com/pinlog/pinlogback/domain/search/RelevanceJudgeSearchApiTests.java b/src/test/java/com/pinlog/pinlogback/domain/search/RelevanceJudgeSearchApiTests.java index 54154029..29f576aa 100644 --- a/src/test/java/com/pinlog/pinlogback/domain/search/RelevanceJudgeSearchApiTests.java +++ b/src/test/java/com/pinlog/pinlogback/domain/search/RelevanceJudgeSearchApiTests.java @@ -31,8 +31,8 @@ /** * 검색 결과 LLM 관련도 재판정(4번째 신호)의 계약을 고정한다. 배포 후 사용자가 보고한 실사례 - * ("싸피 다녔던 헬스장" 질의에서 본문에 "싸피"가 있는 기록이 없는 기록보다 낮은 순위로 나온 것)를 - * 이 신호가 교정한다는 것이 목적이다. + * ("부트캠프 다녔던 헬스장" 질의에서 본문에 "부트캠프"가 있는 기록이 없는 기록보다 낮은 순위로 + * 나온 것)를 이 신호가 교정한다는 것이 목적이다. * *

이 클래스는 플래그를 컨텍스트에서 돈다. 기본값(끔)에서 현행과 동일하다는 계약은 * {@link RecordSearchApiTests}가 기본값 컨텍스트에서 고정한다. @@ -81,7 +81,7 @@ static void stopStub() { } /** - * 사용자 보고 실사례와 같은 모양이다 — 벡터 유사도로는 뒤진 기록("싸피"가 본문에 그대로 + * 사용자 보고 실사례와 같은 모양이다 — 벡터 유사도로는 뒤진 기록("부트캠프"가 본문에 그대로 * 있는 쪽)이 판정에서 {@code VERY_RELEVANT}를 받아 1위로 올라온다. */ @Test @@ -90,7 +90,7 @@ void veryRelevantJudgmentOutranksAHigherSimilarityMatch() throws Exception { long higherSimilarity = newRecord(me, "judge-a", "37.5000000", "127.0000000"); long higherSimilarityContext = newContext(higherSimilarity, me, "군대 전역하고 다닌 헬스장"); long literalMatch = newRecord(me, "judge-b", "37.6000000", "127.1000000"); - long literalMatchContext = newContext(literalMatch, me, "싸피 2학기 동안 다니던 헬스장"); + long literalMatchContext = newContext(literalMatch, me, "부트캠프 다닐 때 1년 동안 다니던 헬스장"); STUB.willReturn( new FastApiSearchStub.Match(higherSimilarity, higherSimilarityContext, 0.85), new FastApiSearchStub.Match(literalMatch, literalMatchContext, 0.70)); @@ -98,7 +98,7 @@ void veryRelevantJudgmentOutranksAHigherSimilarityMatch() throws Exception { new FastApiSearchStub.Judgment(higherSimilarityContext, "WEAKLY_RELEVANT"), new FastApiSearchStub.Judgment(literalMatchContext, "VERY_RELEVANT")); - search(me, "싸피 다녔던 헬스장") + search(me, "부트캠프 다녔던 헬스장") .andExpect(status().isOk()) .andExpect(jsonPath("$.data.items.length()").value(2)) .andExpect(jsonPath("$.data.items[0].recordId").value(literalMatch))