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