Merge pull request 'feat: 聊天接口接入已核验知识检索' (#46) from feat/chat-retrieval-endpoint into dev

This commit was merged in pull request #46.
This commit is contained in:
2026-10-17 11:26:56 +08:00
11 changed files with 76 additions and 13 deletions
+3 -1
View File
@@ -271,7 +271,9 @@ def test_all_management_routes_require_admin_and_history_is_private(anonymous_cl
for method, path in paths:
assert c.request(method, path, json={}).status_code == 403, path
assert c.post("/api/retrieval", json={"query": "占位"}).json()["status"] == "no_evidence"
assert c.post("/api/chat", json={"question": "占位"}).json()["status"] == "stub"
response = c.post("/api/chat", json={"question": "占位"})
assert response.status_code == 200
assert response.json()["status"] == "no_evidence"
def test_admin_access_live_role_and_no_csrf_bypass(client, migrated_database):
+18 -2
View File
@@ -59,12 +59,28 @@ def review(client, item, status="verified"):
)
def test_health_docs_and_stub(client):
def test_health_docs_and_chat_without_evidence(client):
assert client.get("/api/health").json()["status"] == "ok"
assert client.get("/api/ready").json()["database"] == "connected"
assert client.get("/docs").status_code == 200
assert "/api/knowledge/{item_id}/review" in client.get("/openapi.json").json()["paths"]
assert client.post("/api/chat", json={"question": "测试"}).json()["status"] == "stub"
response = client.post("/api/chat", json={"question": "测试"})
assert response.status_code == 200
assert response.json()["status"] == "no_evidence"
def test_chat_returns_real_retrieval_evidence_without_generation(client):
item = knowledge(client, title="那拉提测试资料", content="那拉提文旅服务测试依据")
assert review(client, item).status_code == 200
response = client.post("/api/chat", json={"question": "那拉提文旅服务"})
assert response.status_code == 200
body = response.json()
assert body["status"] == "retrieval_only"
assert "不生成" in body["answer"]
assert body["retrieval_run_id"]
assert body["sources"] == [{"title": "那拉提测试资料", "source_url": "https://example.com/"}]
def test_legacy_create_and_missing_evidence(client):