feat: run fixed research pipelines within durable budgets

This commit is contained in:
yuxuanhui
2026-09-08 22:16:05 +08:00
parent eb4850a003
commit 7860434b04
25 changed files with 2357 additions and 37 deletions
@@ -0,0 +1,39 @@
# 第三阶段验收:固定自动研究
日期:2026-09-08。范围:固定研究配方、有限授权、运行和步骤持久化、候选池、暂停停止与恢复。未调用真实模型或 WorldQuant。
## 交付
- 新增研究流水线菜单和运行页面。六阶段配方按生成、校验设参、回测、评估、增强、重新展开执行,并保存固定输入与轮次节点。
- 启动弹窗确认输入范围、初始模板版本、种子、假设、设置和三项预算。服务端保存不可变授权、账户身份、模型配置版本、配方、规则及元数据快照。
- 模型调用、模拟条目先预留预算;预算均为有限正整数。没有足够预算执行下一步时停止,保留已产生的模板、候选和预览。
- 回测预览先单独提交,再核验授权后使用原 Backtests.start 和调度 lane。幂等键固定到步骤,运行和回测关联在同一事务保存。
- 暂停停止阻止后续步骤,已提交模拟继续收集。服务重启保留预览和已知回测;未完成模型请求标为中断,恢复需要新的调用预算,历史调用尝试不被覆盖。
- 空候选校验阻塞不能通过恢复跳过。未知模拟提交保留 needs_review,不能自动重提。扩大预算或更换范围、账户身份、模型配置需重新确认新研究。
- 普通 Chatbox 仅新增读取研究运行和预算的工具;原 start_backtest 仍需固定集合用户确认,来源字段不是自动执行授权。
## 验收结果
| 步骤 | 结果 |
|---|---|
| 两轮固定研究闭环 | 通过;16 个阶段步骤、4 条模拟、3 次模型调用,保留评估证据及增强候选 |
| 重复启动与冲突请求 | 通过;相同请求返回同一研究;请求标识复用到不同内容返回 409 |
| 预览先提交、模拟预算不足 | 通过;预览保留,模拟使用数为 0,没有平台 POST |
| 同进程并行推进、PostgreSQL 两执行器并发推进 | 通过;模型预算只预留一次,模拟预算不超限 |
| 暂停与停止已发模拟 | 通过;阻止后续评估/增强,已发条目仍保存结果 |
| 模型步骤重启恢复 | 通过;标记中断、不退回已预留预算,恢复保留中断和完成两次尝试记录 |
| 预览后重启、已知回测后重启 | 通过;复用原 preview_id、backtest_run_id,模拟只发送一次 |
| 未知模拟提交 | 通过;保留 needs_review 和已用预算,重复推进及恢复不重发 |
| 无效/布尔/小数预算、账户身份变化 | 通过;非法预算 422,身份变化中断执行,不发模型或模拟请求 |
| 最后一次展开全部无效后恢复 | 通过;409 拒绝跳过校验阻塞,不误报研究完成 |
| 后端全量回归 | 200 passed;后续新增及调整恢复、严格预算、AI 读取等专项最终 36 passed。日志 `/tmp/wq-stage-three-full-backend.log`、`/tmp/wq-stage-three-final-tests.log` |
| 前端构建与类型检查 | 通过;保留原有 lottie-web 构建警告 |
| 浏览器授权→执行→刷新恢复 | 通过;一轮执行 2 条模拟和 2 次模型调用,8 个步骤均完成。截图 `/tmp/wq-stage-three-run.png` 已检查 |
| 侧栏与 AI 浏览器回归 | 5 项通过;流水线用例的下拉动画层造成弹窗定位歧义,限定授权弹窗后复验 1 passed。日志 `/tmp/wq-stage-three-browser-regression.log`、`/tmp/wq-stage-three-browser-final.log` |
| PostgreSQL 17 增量迁移和恢复 | 0007→0008、Alembic check、两轮闭环、并发预算及 pg_dump/pg_restore 通过。旧研究备注保留。脚本 `backend/tests/research_flows_postgres.py`,日志 `/tmp/wq-stage-three-postgres.log` |
独立只读核验没有发现预算超支或重启重复模拟问题;其指出的空候选恢复问题已修正并增加回归测试。自定义工作流入口尚未展示,留待第四阶段开放。
## 仍需联调
真实平台协议和真实模拟仍待此前授权问题得到当前对话确认;此处所有模型与平台均为合成响应,不作为真实平台验收记录。模型配置必须已测试启用,固定流水线使用现有 REGULAR / FASTEXPR / EQUITY 和单账户、单后端执行边界。