Skip to content

feat(S15P11A705-400): 검색 응답 조립 단계에 결합 신뢰도 게이트를 추가한다 - #210

Merged
ghkim1632 merged 1 commit into
devfrom
feat/S15P11A705-400-confidence-gate
Aug 7, 2026
Merged

feat(S15P11A705-400): 검색 응답 조립 단계에 결합 신뢰도 게이트를 추가한다#210
ghkim1632 merged 1 commit into
devfrom
feat/S15P11A705-400-confidence-gate

Conversation

@ghkim1632

Copy link
Copy Markdown
Contributor

요약

검색 결과 중 S1(벡터) 신호 하나뿐이고 유사도가 낮은 결과를 응답에서 제외하는 결합 신뢰도 게이트를 추가한다. S2(문자열)·S3(키워드) 중 하나라도 있으면 유사도와 무관하게 남긴다. 기본값은 꺼짐 — 검증 게이트 통과 전에는 현행과 동일하다.

Jira (필수)

  • 키: S15P11A705-400

관련 GitHub Issue (선택)

(없음)

변경 사항

  • ConfidenceGateProperties 신설 (pinlog.search.gate.enabled 기본 false, similarity-threshold 기본 0.35)
  • AiSearchResponse.MatchkeywordMatched 필드 추가 (ai 레포 S15P11A705-399 응답 수신)
  • RecordSearchService: mergeLexicalMatchesLexicalMergeResult(병합 목록 + 문자열 매치 Record id 집합)를 반환하도록 변경, applyConfidenceGate 신설 — 문자열 병합 직후·Core 재검증 이전에 적용
  • application.ymlpinlog.search.gate.* 설정 추가
  • BD-52 결정 기록(게이트 위치 선택 근거), BI-44 구현 리포트, worklog 항목

테스트 / 검증

  • ./gradlew clean check --no-daemon — BUILD SUCCESSFUL
  • DB 변경 시 PostgreSQL 통합 테스트 — ConfidenceGateApiTests 6/6, RecordSearchApiTests 38/38 (Testcontainers)
  • migration 변경 시 빈 DB migration 테스트 — 해당 없음
  • API 계약 변경 시 관련 문서 갱신 — BD-52, BI-44
  • 되돌리기 어려운 결정 포함 — BD-52 추가

./gradlew test --no-daemon --tests "com.pinlog.pinlogback.domain.search.*" → 전체 통과
./gradlew clean check --no-daemon → BUILD SUCCESSFUL (checkstyle·jacoco 포함)

리뷰 포인트

  1. 게이트 위치를 "응답 조립 이후"가 아니라 "문자열 병합 직후·Core 재검증 이전"으로 선택했다 — 근거는 BD-52 (세 신호가 갖춰지는 가장 이른 지점, DTO에 신호를 얹지 않음, 불필요한 Core 조회 회피)
  2. keywordMatched가 없거나 null이면 다른 필수 필드(recordId 등)와 달리 Match 자체를 버리지 않고 신호 없음(false)으로만 처리한다

미결 / 후속

  • 오프라인 재측정(S15P11A705-401)이 재구성한 S2·S3 신호의 실서버 on/off 대조는 아직 없음 — 검증 게이트 통과 전 필요
  • 인계 문서가 가리킨 .claude/handoff/SEARCH-UPGRADE-HANDOFF.md는 어디에도 없었음 — BD-52에 기록

S1(벡터)·S2(문자열)·S3(키워드) 세 신호 중 S1 하나뿐이고 유사도가 임계값(기본
0.35, ai 레포 S15P11A705-401 재측정 채택값) 미만인 결과를 응답에서 뺀다.
S2·S3 중 하나라도 있으면 유사도와 무관하게 남긴다.

게이트는 문자열 병합 직후·Core 재검증 이전에 건다 — 세 신호가 전부 갖춰지는
가장 이른 지점이라 DTO에 신호를 얹지 않고 불필요한 Core 조회도 만들지 않는다
(BD-52). AiSearchResponse.Match에 keywordMatched 필드를 추가해 ai 레포가
이미 계산해 보내는 S3 신호를 받는다. 기본값은 꺼짐 — 검증 게이트 통과 전에는
현행과 동일하다.
@ghkim1632
ghkim1632 merged commit a6767e3 into dev Aug 7, 2026
2 checks passed
@ghkim1632
ghkim1632 deleted the feat/S15P11A705-400-confidence-gate branch August 7, 2026 10:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant