feat(backend): 完善 Workflow 与 DeepResearch 的运行链路与持久化能力
功能说明:\n- 重构并增强工作流网关执行链路,支持更完整的 proposal 与 run 调度参数透传\n- 增加 DeepResearch/workflow 运行事件持久化能力并补齐建表 SQL 与查询/保存接口适配\n- 优化 lead agent 与 deep research runner 的中间态处理,增强线程收集与执行链并发控制\n- 调整工作流执行器与任务路由,提升兼容性并完善错误与回放行为\n- 补充回归测试:deep_research 持久化、workflow 并发、定义加载、引擎执行、run 流程等覆盖
This commit is contained in:
1 parent
f5bf7897b9
commit
6d326a21cd
28 files changed
+836
-135
No files matched your search
@@ -322,6 +322,34 @@ async def test_sql_append_without_run_row_falls_back_to_max_seq(session_factory)
|
||||
assert (first["seq"], second["seq"]) == (1, 2)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_sql_event_replay_keeps_full_native_message_frame(session_factory) -> None:
|
||||
"""A reconnect must receive the same large DeerFlow tool frame as live SSE."""
|
||||
events = SqlWorkflowEventStore(session_factory)
|
||||
run_id = f"run-{uuid.uuid4().hex[:8]}"
|
||||
payload = {
|
||||
"messages": [
|
||||
{
|
||||
"type": "tool",
|
||||
"name": "web_search",
|
||||
"content": {"results": [{"snippet": "x" * 90_000}]},
|
||||
},
|
||||
{"langgraph_node": "research"},
|
||||
]
|
||||
}
|
||||
|
||||
await events.append(
|
||||
run_id=run_id,
|
||||
workflow_id="wf-1",
|
||||
version_id="v-1",
|
||||
event_type="node.message",
|
||||
payload=payload,
|
||||
)
|
||||
|
||||
replayed = await events.list_after(run_id)
|
||||
assert replayed[0]["payload"] == payload
|
||||
|
||||
|
||||
# ── sink: persist-then-publish, never ghost events ──────────────────────
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user