70 lines
2.6 KiB
Python
70 lines
2.6 KiB
Python
from apps.knowledge.models import KnowledgeBase, KnowledgeChunk, KnowledgeDocument, KnowledgeItem
|
|
|
|
|
|
def test_create_and_list_knowledge_base(admin_client, db):
|
|
response = admin_client.post(
|
|
"/api/knowledge/bases",
|
|
data={
|
|
"name": "税务采集知识库",
|
|
"description": "税局采集、日志和常见问题",
|
|
"scope": "数据采集",
|
|
},
|
|
content_type="application/json",
|
|
)
|
|
|
|
assert response.status_code == 200
|
|
payload = response.json()
|
|
assert payload["name"] == "税务采集知识库"
|
|
assert payload["enabled"] is True
|
|
|
|
response = admin_client.get("/api/knowledge/bases")
|
|
|
|
assert response.status_code == 200
|
|
assert response.json()[0]["name"] == "税务采集知识库"
|
|
|
|
|
|
def test_create_knowledge_item_builds_chunks(admin_client, db):
|
|
base = KnowledgeBase.objects.create(name="税务采集知识库", scope="数据采集")
|
|
|
|
response = admin_client.post(
|
|
"/api/knowledge/items",
|
|
data={
|
|
"knowledge_base_id": base.id,
|
|
"title": "税局采集进度查询",
|
|
"problem": "客户询问采集进度长时间不更新",
|
|
"applicable_scope": "生产环境税局采集",
|
|
"error_code": "",
|
|
"root_cause": "税局服务响应不稳定",
|
|
"troubleshooting_steps": "查询 Python 日志并确认采集任务状态",
|
|
"solution": "告知客户税局不稳定,任务仍在采集中,稍后复查。",
|
|
"risk_note": "不要重复触发采集任务。",
|
|
"status": "published",
|
|
},
|
|
content_type="application/json",
|
|
)
|
|
|
|
assert response.status_code == 200
|
|
item = KnowledgeItem.objects.get(id=response.json()["id"])
|
|
assert item.status == "published"
|
|
assert KnowledgeChunk.objects.filter(item=item).count() >= 1
|
|
|
|
|
|
def test_ingest_document_text_creates_document_and_chunks(admin_client, db):
|
|
base = KnowledgeBase.objects.create(name="日志知识库", scope="技术支持")
|
|
|
|
response = admin_client.post(
|
|
"/api/knowledge/documents",
|
|
data={
|
|
"knowledge_base_id": base.id,
|
|
"file_name": "tax-log.md",
|
|
"file_type": "markdown",
|
|
"content": "税局接口不稳定时,采集任务会停留在处理中。需要查询 Python 日志确认。",
|
|
},
|
|
content_type="application/json",
|
|
)
|
|
|
|
assert response.status_code == 200
|
|
document = KnowledgeDocument.objects.get(id=response.json()["id"])
|
|
assert document.parse_status == "success"
|
|
assert KnowledgeChunk.objects.filter(document=document).count() >= 1
|