feat(deep-research): 强化任务链路可靠性并接入 agentfx 报告助手种子

功能说明:\n- 重构 Deep Research 调度与执行链,补齐 dispatcher、executor、live hub 与依赖注入入口,提升任务下发、执行、回调的稳定性\n- 增强运行时持久化与恢复能力,接入业务映射、任务来源与任务事件日志模型,覆盖持久化与执行可靠性关键路径测试\n- 新增 agentfx 报告助手 seed 与任务报告导入脚本配置,支持离线环境快速初始化与任务流模板回填\n- 完善 deep-research 与 thread_runs 路由参数编排,兼容不同业务映射与运行入口的前后端联动\n- 补充前端 agentfx deep-link 解析,保证 deep-research 场景下的登录跳转与任务上下文一致
This commit is contained in:
董宏凯 committed 2026-09-04 23:18:52 +08:00
1 parent 438772f0b7
commit 5c75e1af16
36 files changed
+3163 -312

No files matched your search

@@ -42,6 +42,8 @@ async def test_report_is_persisted_before_job_is_marked_completed():
"drs_1",
"worker_1",
DeepResearchResult(report_markdown="# 报告", source_ids=["src_1"]),
user_id="user_1",
query="课题",
)
assert sessions.report_updates[0]["report_markdown"] == "# 报告"
@@ -62,6 +64,8 @@ async def test_report_projection_failure_never_marks_job_completed(monkeypatch):
"drs_1",
"worker_1",
DeepResearchResult(report_markdown="# 报告"),
user_id="user_1",
query="课题",
)
assert jobs.progress_calls == []
@@ -70,3 +74,26 @@ async def test_report_projection_failure_never_marks_job_completed(monkeypatch):
def test_terminal_timeline_events_are_valid_durable_event_types():
assert DeepResearchEvent(type="job_completed", phase="done").type == "job_completed"
assert DeepResearchEvent(type="job_failed", phase="done").type == "job_failed"
def test_zero_source_fallback_is_a_valid_completed_report():
from app.gateway.deep_research_job_executor import _terminal_report_validation_error
from deerflow.agents.deep_research.runners.basic import _build_report_fallback
report = _build_report_fallback("没有命中的课题", "", 0)
assert _terminal_report_validation_error(report) is None
assert "没有命中的课题" in report
def test_source_table_reload_does_not_become_session_error():
from app.gateway.deep_research_job_executor import _session_diagnostic_error
assert _session_diagnostic_error(
[
{
"code": "client_materials_reloaded_before_write",
"stage": "collecting",
"detail": "写作前再次从素材表读到 15 条",
}
]
) is None