2 LangGraph 编排深化、异步任务闭环与前端产品化

阶段时间:约 2026-04-06~2026-04-30
项目:FinAgent


摘要

本阶段在上一阶段的基础上,把系统推进到可异步执行、可轮询感知进度、可按用户隔离与清理的联调形态,并完成数据链路工程化分层前端产品化的一轮集中迭代:后端侧落地 LangGraph 主图与子图(含分析师 ReAct 工具循环)、任务创建即落盘stage_log 驱动的进度语义、Dataflow 与 HTTP 路由解耦及 vendor 回退;工程侧修复本机 Ollama 在 Windows 代理环境下的调用问题,补齐 GET /api/historyDELETE /api/analysis/tasks/{task_id} 与用户维度隔离;前端侧完成登录页两段式与动态背景react-router-dom 系统级路由与登录守卫报告 Markdown 统一渲染与 PDF 导出走势看板(K 线 + 均线 + 成交量)以及首页实时财经新闻。整体上,本阶段目标是把「图执行 → API 契约 → 多页面体验」对齐到可演示、可迭代的工程与产品标准,分析师阶段 LLM 输出质量仍在持续优化中。


一、阶段目标与主线叙事

上一阶段已固定五阶段投研叙事与 AkShare 数据封装。本阶段的主线可以概括为三条:

  1. 编排运行时:用 LangGraph 表达主流程(分析师子图 → 研究辩论 → 交易员 → 风控 → 组合经理 → 汇总报告),用 AnalysisGraphState + stage_log 同时服务节点协作与前端进度展示。
  2. 任务与数据架构:异步 POST /api/analysis/tasks 配合轮询;Dataflow 层统一 route_to_vendor,与 FastAPI「任务生命周期」解耦;providers 专注拉数与归一化。
  3. 前端产品化:从「能联调」升级为可分享 URL可读报告可看走势有资讯入口的完整侧栏信息架构(首页 / 单股 / 走势看板 / 分析报告;任务中心在导航上收敛,历史与报告由报告页承载)。

二、编排与状态:LangGraph、任务 API 与前端轮询

主图在 runner 侧串起 analyst、research_debate、trader、risk_review、portfolio_manager、build_report 等节点;分析师子图内四位专科(市场 / 舆情 / 新闻 / 基本面)共用 「Analyst 节点 + ToolNode + tools_condition」 的 ReAct 模板,避免工具未执行完就提前收口,并支持按角色限制工具集与 analyst_react_summaries 审计摘要。

状态设计不仅是 LLM 上下文,更是 API 与前端的事实来源task_idtickeranalysis_dateuser_id、各阶段产物、report_json / report_markdown、以及最关键的 stage_logpending / running / succeeded / skipped / failed 与时间戳)。节点侧统一「标记 running → 执行业务 → 标记 succeeded/failed → _persist_running_snapshot」模式;preseeded=True 表示创建任务时已写入进度骨架,前端拿到 task_id 即可立刻轮询,无需等待首节点结束。

典型接口形态POST /api/analysis/tasks 创建并后台执行图;GET /api/analysis/tasks/{task_id} 读状态与 stage_logGET .../result 取终态结果;只读报告另有 JSON / Markdown 路由;删除走 DELETE /api/analysis/tasks/{task_id} 并清理落盘文件。

(组员技术展开见 组员博客。)


三、数据层:Dataflow 路由与 Providers 边界

本阶段明确 两类路由:HTTP 路由负责任务鉴权、校验、触发与落盘;Dataflow 路由route_to_vendor)负责抽象工具名到 vendor → providers 的映射、优选 vendor 与失败回退。图编排与 analyst_pipeline 结构化补齐复用同一条数据调用路径,上层不直接依赖 AkShare,便于替换数据源、单独跑 provider smoke 与定位「空数据 / 列不一致」类问题。

Providers 继续承担 OHLCV、新闻、社媒、扩展基本面等归一化职责,与任务状态、图节点流转严格分离。

(架构与时序说明见 组员博客。)


四、后端工程:本机 LLM、异步任务、历史与用户隔离

  • LLM 与本机 Ollama:在未显式配置 OpenAI 兼容 base_url 时,优先走本机 Ollama;对 11434 等本机地址使用 httpxtrust_env=False,避免 Windows 系统代理把 127.0.0.1 流量导向代理导致 502;可通过环境变量关闭自动本机探测以强制走公网。
  • 异步任务与归属:创建任务时先落盘 running 并写入 user_id,后台任务执行 LangGraph;读状态 / 报告前校验任务归属。
  • 历史与删除GET /api/history 按当前用户过滤;无 user_id 的旧落盘文件不入列表;删除接口真实删除 state + report 等产物,避免「前端列表删掉刷新又回来」。
  • 契约与测试AnalysisTaskState 等 schema 与前端对齐;pytest 通过 mock 覆盖异步成功、失败无报告、历史列表与删除等路径。

(变更清单与踩坑表见 组员博客 中「本机 LLM、任务中心/历史」等相关周报。)


五、前端:登录、路由、报告、走势与首页

  • 登录页intro / form 两段式流程;全屏循环视频背景 + 暗角蒙版限定在 .loginWrap,避免污染已登录主壳;毛玻璃卡片、新拟态 Tab、登录 / 注册横向滑动切换;认证仍对接 /api/auth/*
  • 系统级路由:引入 react-router-dom,路径包括 //single/trend/report/login未登录重定向、登录后 location.state.from 回跳、已登录访问 /login 回首页;侧栏 NavLink 样式修复(去下划线、防溢出)。
  • 单股分析runAnalyze 串联创建任务、轮询至终态、取结果;股票代码 全角 / 大小写 / shsz 前缀与后缀 等规范化后请求 /api/analysis/ticker/{ticker}/meta 联动公司名;分析日期默认当天且 禁止未来日;状态文案中文化与 stage_log 映射进度。
  • 报告体验:Markdown 反转义标准化 + ReactMarkdown + remark-gfm 统一渲染;报告页支持查看与 PDF 下载,列表对接 GET /api/history,进入页面重新加载。
  • 走势看板:K 线、MA5/MA10/MA30、成交量副图;默认可展示 A 股总体(以上证指数为参考),输入个股后切换个股走势。
  • 首页:「实时财经新闻」按平台聚合,短 TTL 缓存与无效链接降级,减少标题乱跳与 404。
  • 导航收敛:移除任务中心独立挂载,历史与操作集中在分析报告页,降低重复入口。

(登录页与单股分析、路由升级见 组员博客;报告展示、走势看板与首页新闻见 组员博客。)


六、界面截图(本地开发环境 127.0.0.1:5173

登录
在这里插入图片描述

登录 / 注册表单
在这里插入图片描述

首页(能力概览 + 实时财经新闻)
在这里插入图片描述

走势看板(K 线、均线、成交量)
在这里插入图片描述

分析报告列表(历史、状态、查看 / PDF / 删除)
在这里插入图片描述

报告查看弹窗(结论文本 + 工具原始数据摘录)
在这里插入图片描述


七、阶段成果与如何复现

成果可概括为:

维度 本阶段产出
编排 LangGraph 主图 + 分析师 ReAct 子图;stage_logpreseeded 任务语义
数据 Dataflow 与 API 解耦;route_to_vendor + providers 统一工具路径
工程 本机 Ollama 稳定调用;异步任务、历史、按用户过滤与真实删除
产品 登录视觉升级;URL 路由与守卫;报告 Markdown + PDF;走势看板;首页新闻

复现路径:

  1. 根目录 venv 安装后端依赖;配置 LLM(本机 Ollama 或显式 OpenAI 兼容端点)。
  2. cd backend 启动 uvicornfrontendnpm run dev,或使用根目录 start-dev.bat
  3. 注册 / 登录后依次验证:单股分析异步完成、报告页历史列表、走势看板、首页新闻加载。

八、小结与下阶段展望

本阶段 FinAgent 在图编排运行时数据路由分层前端可读可信三条线上同步推进:后端把「执行图」和「取数」拆开,前端把「能返回字符串」升级为「像研究报告与看盘工具」。已知限制包括:分析师阶段 LLM 输出质量与可解释性仍需迭代;新闻源与部分 meta 依赖外网稳定性;深链预填(如 /single?ticker=...)、导出模板与数据层观测指标等可作为自然延伸。

下阶段展望: 已基本实现分析师节点,(完整版将在下一阶段产出);下一步将逐步实现接下来的四个节点——研究辩论交易员风控组合经理——与主图阶段及报告、前端展示持续对齐。


九、组员个人博客(CSDN)

组员 博客
yjd(LangGraph、路由编排、分析师子图等) https://blog.csdn.net/2301_80139500
cjw(异步任务与历史、报告与走势看板、首页新闻等) https://blog.csdn.net/2301_80431247
qjh(Dataflow 分层、FastAPI 与数据路由协作等) https://blog.csdn.net/2301_80202012
wyf(登录页、单股分析、系统级 URL 与路由等) https://blog.csdn.net/2301_81374824
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐