60 lines
2.1 KiB
Python
60 lines
2.1 KiB
Python
import pytest
|
|
|
|
from review_agent.models import KnowledgeBaseDocument
|
|
from review_agent.services import build_knowledge_context
|
|
|
|
|
|
pytestmark = pytest.mark.django_db
|
|
|
|
|
|
def test_build_knowledge_context_ignores_irrelevant_rag_chunks(monkeypatch):
|
|
monkeypatch.setattr(
|
|
"review_agent.services.search_knowledge_base",
|
|
lambda query, n_results=5: {
|
|
"query": query,
|
|
"results": [
|
|
{
|
|
"source": "附件 4 体外诊断试剂注册申报资料要求及说明.doc",
|
|
"text": "预期用途应明确产品用于检测的分析物和功能。",
|
|
"score": 7.636,
|
|
"metadata": {"source_type": "regulatory_document"},
|
|
}
|
|
],
|
|
"error_message": "",
|
|
},
|
|
)
|
|
|
|
context = build_knowledge_context("孙之烨是谁")
|
|
|
|
assert context == ""
|
|
|
|
|
|
def test_build_knowledge_context_uses_full_document_when_name_matches(settings, tmp_path, monkeypatch, django_user_model):
|
|
settings.MEDIA_ROOT = tmp_path
|
|
user = django_user_model.objects.create_user(username="owner", password="pass")
|
|
document_path = tmp_path / "resume.txt"
|
|
document_path.write_text(
|
|
"孙之烨,负责审核智能体项目。\n完整经历:曾组织技术分享并带队参加竞赛。",
|
|
encoding="utf-8",
|
|
)
|
|
KnowledgeBaseDocument.objects.create(
|
|
user=user,
|
|
display_name="孙之烨简历",
|
|
original_name="孙之烨-260510.txt",
|
|
storage_path=str(document_path),
|
|
file_size=document_path.stat().st_size,
|
|
status=KnowledgeBaseDocument.Status.ACTIVE,
|
|
is_active=True,
|
|
indexed_chunk_count=2,
|
|
)
|
|
monkeypatch.setattr(
|
|
"review_agent.services.search_knowledge_base",
|
|
lambda query, n_results=5: {"query": query, "results": [], "error_message": ""},
|
|
)
|
|
|
|
context = build_knowledge_context("孙之烨是谁")
|
|
|
|
assert "全文材料" in context
|
|
assert "来源:用户知识库/孙之烨-260510.txt" in context
|
|
assert "完整经历:曾组织技术分享并带队参加竞赛" in context
|