feat: add knowledge base core api
This commit is contained in:
69
backend/apps/knowledge/tests/test_knowledge_api.py
Normal file
69
backend/apps/knowledge/tests/test_knowledge_api.py
Normal file
@@ -0,0 +1,69 @@
|
||||
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
|
||||
Reference in New Issue
Block a user