from django.urls import reverse from agent_core.results import AgentResult from apps.audit.models import AgentAuditLog, DemoBusinessRecord from apps.audit.services import create_audit_log from agent_core.tools.builtin_tools import query_demo_records def test_create_audit_log_records_success_result(db): result = AgentResult(answer="回答", structured_output={"x": 1}, status="success") log = create_audit_log("knowledge_qa", "知识库问答助手", "问题", result) assert AgentAuditLog.objects.count() == 1 assert log.final_answer == "回答" assert log.structured_output == {"x": 1} assert log.status == "success" def test_audit_list_page_shows_log(client, db): result = AgentResult(answer="回答", status="success") create_audit_log("knowledge_qa", "知识库问答助手", "问题", result) response = client.get(reverse("audit:list")) assert response.status_code == 200 assert "知识库问答助手" in response.content.decode("utf-8") def test_create_audit_log_masks_api_keys_from_error_message(db): result = AgentResult( answer="", status="failed", error="LLM_API_KEY=sk-secret-value 调用失败", ) log = create_audit_log("knowledge_qa", "知识库问答助手", "问题", result) assert "sk-secret-value" not in log.error_message assert "sk-***" in log.error_message def test_query_demo_records_reads_demo_business_record_table(db): DemoBusinessRecord.objects.create( scenario_id="quality_analysis", record_type="defect", title="A线缺陷", payload={"rate": 0.12}, ) result = query_demo_records(user_input="quality_analysis defect") assert result["records"][0]["title"] == "A线缺陷" assert result["records"][0]["payload"] == {"rate": 0.12}