feat(chat): agent 产出进度/错误时发射事件(保留持久化兜底)
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import tempfile
|
||||
|
||||
from genesis.chat.agent import ChatAgent
|
||||
from genesis.server.service import GenesisService
|
||||
from genesis.server.store import ProjectsStore, SessionStore
|
||||
|
||||
_tmp = tempfile.mkdtemp(prefix="genesis_ws_")
|
||||
|
||||
|
||||
def _make_agent(sink):
|
||||
store = SessionStore(db_path=f"{_tmp}/sessions.db")
|
||||
projects = ProjectsStore(db_path=f"{_tmp}/projects.db")
|
||||
svc = GenesisService(store=store, data_root="data", engine="fake", projects=projects)
|
||||
return ChatAgent(service=svc, fake=True, engine="fake", progress_sink=sink)
|
||||
|
||||
|
||||
def test_agent_emits_progress_events():
|
||||
events = []
|
||||
agent = _make_agent(events.append)
|
||||
sid = agent.service.create_session("u1").session_id
|
||||
agent._emit_progress(sid, {"step": "parse", "status": "ok", "detail": "解析完成"})
|
||||
assert events and events[0]["type"] == "progress"
|
||||
assert events[0]["step"] == "parse"
|
||||
|
||||
|
||||
def test_agent_emits_error_event():
|
||||
events = []
|
||||
agent = _make_agent(events.append)
|
||||
sid = agent.service.create_session("u1").session_id
|
||||
agent._emit_error(sid, "解析失败:boom", "generate")
|
||||
errs = [e for e in events if e["type"] == "error"]
|
||||
assert errs and "boom" in errs[0]["detail"]
|
||||
Reference in New Issue
Block a user