Files
ai-ticket-platform/backend/apps/knowledge/tests/test_knowledge_api.py
2026-07-03 17:49:44 +08:00

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