From 60cb48bbe4b6c528ad85ed1b22964c6271b6b315 Mon Sep 17 00:00:00 2001 From: hyungi Date: Sat, 13 Jun 2026 13:03:27 +0900 Subject: [PATCH] =?UTF-8?q?fix(safety):=20C-1=20fusion=20=EC=9E=AC?= =?UTF-8?q?=EA=B5=AC=EC=84=B1=20=EC=8B=9C=20=EB=B6=84=EB=A5=98=20=EC=B6=95?= =?UTF-8?q?=20=EB=A9=94=ED=83=80=20=EC=A0=84=ED=8C=8C=20=E2=80=94=203=20Se?= =?UTF-8?q?archResult=20=EC=9E=AC=EC=83=9D=EC=84=B1=20=EC=A7=80=EC=A0=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fusion legacy(line 66)·RRF(122)·multi_query rewrite(pipeline 456)가 명시 필드 나열로 SearchResult 재구성 → material_type/jurisdiction/published_date 누락(필터는 정확, D-1 유형 표시만 None). 세 지점 동기화. 흉터: SearchResult 필드 추가 시 재구성 지점 전수 동기 필요. Co-Authored-By: Claude Fable 5 --- app/services/search/fusion_service.py | 8 ++++++++ app/services/search/search_pipeline.py | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/app/services/search/fusion_service.py b/app/services/search/fusion_service.py index 5c857bf..c5a426a 100644 --- a/app/services/search/fusion_service.py +++ b/app/services/search/fusion_service.py @@ -72,6 +72,10 @@ class LegacyWeightedSum(FusionStrategy): score=existing.score + r.score * 0.5, snippet=existing.snippet, match_reason=f"{existing.match_reason}+vector", + # C-1: 분류 축 메타 전파 (재구성 시 누락 = D-1 유형 표시 None) + material_type=existing.material_type, + jurisdiction=existing.jurisdiction, + published_date=existing.published_date, ) elif r.score > 0.3: merged[r.id] = r @@ -128,6 +132,10 @@ class RRFOnly(FusionStrategy): score=rrf_score, snippet=base.snippet, match_reason="+".join(reasons), + # C-1: 분류 축 메타 전파 (재구성 시 누락 = D-1 유형 표시 None) + material_type=base.material_type, + jurisdiction=base.jurisdiction, + published_date=base.published_date, ) ) return merged[:limit] diff --git a/app/services/search/search_pipeline.py b/app/services/search/search_pipeline.py index 59b1acb..996737f 100644 --- a/app/services/search/search_pipeline.py +++ b/app/services/search/search_pipeline.py @@ -462,6 +462,10 @@ def _rrf_fuse_variants( score=rrf_score, snippet=doc.snippet, match_reason=f"{doc.match_reason}+multi_query_rrf", + # C-1: 분류 축 메타 전파 (SearchResult 재구성 지점 — fusion 2곳과 동기) + material_type=doc.material_type, + jurisdiction=doc.jurisdiction, + published_date=doc.published_date, )) return fused[:limit]