feat: compose native research workflows in QuantFlow

This commit is contained in:
yuxuanhui
2026-09-08 22:42:29 +08:00
parent 7860434b04
commit a6e36e50ec
22 changed files with 2274 additions and 85 deletions
@@ -0,0 +1,46 @@
# 第四阶段验收:QuantFlow 原生研究画布
日期:2026-09-08。范围:流程画布、固定流程版本、原生节点及共用研究执行。所有平台、账户和模型响应均为隔离合成数据,没有调用真实模型或 WorldQuant。
## 交付
- 研究编排分组增加 QuantFlow,保留原侧栏、最近访问和 AI 助手。流程库、画布、节点配置、连线、版本与运行记录可直接使用。
- 画布支持拖动及方向键移动节点、缩放、适应宽度,配置素材版本、研究说明、变体方法、筛选结论和迭代轮数。草稿保留本地基准版本,冲突更新返回 409;历史版本可查看或另存。
- 原生节点包括固定输入、特征方案、模板生成/增强、模板展开、两类变体、回测、规则评估、筛选、条件、汇总、有界迭代。固定六阶段研究可复制为内置配方。
- 保存及启动都验证节点唯一性、连接端点、输入输出类型、普通连接无环、可达性、配置和迭代约束。首版一个流程最多 50 节点、100 连线;一个终点迭代节点重复整个流程,最多 100 轮,不能超过本次授权轮数。
- 运行固定工作流版本、节点引用的模板/特征版本、输入、种子、规则和预算。启动不含模型节点的流程无需配置模型;所有预算仍须为有限正整数。
- 模板、特征及结构变体复用统一表达式模块;设置变体冻结种子表达式及原设置,按独立目标输入计算合法设置,回测前再次核对授权范围。候选上限与采样种子保留。
- 条件按规则报告的 pass/review/block 选择出边,未命中分支和空筛选不会执行后续模拟。汇总保存产物引用,避免递归复制整个上游图。
- 完全复用研究运行、步骤、预算、预览、回测调度和评估实现;重复事件不增加模拟,刷新后恢复运行和节点产物显示。
- 模型返回后先保存产物;特征转换和结构变体展开在下一次活跃步骤进行。暂停、停止、账户改变期间只收集已发结果,不继续转换或展开;恢复不重复已完成模型调用。
- AI 可读取已有流程版本、研究运行及预算;普通 Chatbox 不能借来源字段获得自动执行授权。
## 验收结果
| 验收项 | 结果 |
|---|---|
| 非法节点图、连线、循环和配置 | 通过;重复边、断连、类型不符、普通循环、布尔迭代上限、未知脚本配置、非法筛选和素材版本返回 422 |
| 保存后修改模板和流程 | 通过;旧运行继续使用 v1,模板更新为无效表达式不影响已启动版本 |
| 三路条件与汇总 | 通过;仅一个匹配分支执行,其余两个跳过;汇总保存多个上游引用 |
| 固定特征 → 模板 → 展开 → 回测 → 筛选 → 迭代 | 通过;两轮共 4 条模拟、0 次模型调用,特征原版本可追溯 |
| 模型特征与结构变体 | 通过;各使用一次模型调用,保存特征/模板、候选及种子关系 |
| 市场与设置变体 | 通过;启动后种子被改动仍使用原表达式,目标输入和股票池严格对应,没有调用模型 |
| 空筛选、重复完成事件 | 通过;不发后续模拟,不重复回测 |
| 模型期间暂停、停止、账户变化 | 通过;模型产物持久化但没有新候选/回测,暂停后恢复复用产物,模型调用数保持 1 |
| 后端全量回归 | 最终 220 passed,日志 `/tmp/wq-stage4-full-backend-final.log` |
| 静态检查和前端构建 | Ruff、TypeScript、构建及 diff whitespace 检查通过;保留依赖 lottie-web 原有 eval 构建警告 |
| 浏览器画布闭环 | 通过;新建 8 节点、连线、键盘移动、保存 v1/v2、预算确认、固定 v2 启动、分支和刷新恢复,模拟 2 条、模型调用 0 次 |
| 浏览器回归 | 8 passed,覆盖 QuantFlow、固定流水线、特征/成果、侧栏、4 项 AI 行为;日志 `/tmp/wq-stage4-browser-regression.log` |
| PostgreSQL 17 与备份恢复 | 通过;从第三阶段备份恢复,Alembic head 0008 无新增迁移差异,两轮原生图执行与重放正常;pg_dump/pg_restore 后完整运行/步骤快照摘要及旧研究备注一致。脚本 `backend/tests/research_quantflow_postgres.py`,日志 `/tmp/wq-stage4-postgres.log` |
画布连线路由和适应宽度调整后,单独复验 1 passed,日志 `/tmp/wq-stage4-canvas-final.log`。
最终截图:`/tmp/wq-stage-four-canvas.png`、`/tmp/wq-stage-four-run.png`。主代理已检查画布、运行状态、来源入口和中文界面。
独立只读核验已完成。其指出暂停后的模型回调仍执行变体展开,已拆成持久的模型产物与后续转换步骤,增加暂停、停止及账户变化回归。全量测试过程中发现测试辅助函数漏导入和 AI 工具重复注册,均已修正,以上列出的是最终通过结果。
## 边界与待联调
首版迭代重复整个流程,普通节点各接受一个上游,汇总允许多个上游;不提供任意脚本、CLI、外部事件自动启动或正式 Alpha 提交。流程编辑与启动分开,扩大预算和范围须重新确认新运行。
真实 WorldQuant 认证、元数据协议及模拟联调仍待当前对话确认授权。自动审批此前拒绝了读取 account.json 后向官方平台联调的提权命令,理由是未将任务目标记录中的授权认可为当前用户消息授权;没有绕过审批。本轮合成测试不能证明真实字段可用性和平台合法设置协议已联调通过。