fix(agent): serialize retrieval trace responses
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import Session
|
||||
@@ -11,6 +13,7 @@ from app.models.knowledge import (
|
||||
Knowledge,
|
||||
KnowledgeChunk,
|
||||
KnowledgeManifest,
|
||||
KnowledgeRetrievalLog,
|
||||
KnowledgeSection,
|
||||
KnowledgeSourceSnapshot,
|
||||
KnowledgeVersion,
|
||||
@@ -140,6 +143,22 @@ def test_course_question_searches_chunk_and_reads_parent_section():
|
||||
assert any(item["tool"] == "read_knowledge_sections" for item in result.tool_trace)
|
||||
|
||||
|
||||
def test_tool_trace_serializes_published_datetime():
|
||||
with _database() as db:
|
||||
knowledge = _add_published_knowledge(db, knowledge_id=1, name="亲子课程")
|
||||
version = db.get(KnowledgeVersion, knowledge.current_version_id)
|
||||
assert version is not None
|
||||
version.published_at = datetime(2026, 7, 13, 10, 30, 0)
|
||||
db.commit()
|
||||
|
||||
result = asyncio.run(KnowledgeAgentService.build_result(db, question="课程里如何进行亲子沟通?"))
|
||||
log = db.get(KnowledgeRetrievalLog, result.retrieval_log_id)
|
||||
trace = json.loads(log.tool_trace)
|
||||
|
||||
catalog_call = next(item for item in trace if item["tool"] == "get_knowledge_catalog")
|
||||
assert catalog_call["items"][0]["publishedAt"] == "2026-07-13T10:30:00"
|
||||
|
||||
|
||||
def test_contextual_follow_up_is_rewritten_before_agent_decision():
|
||||
with _database() as db:
|
||||
history = [
|
||||
|
||||
Reference in New Issue
Block a user