feat: 新增区间分析功能#669
Open
Suailen wants to merge 1 commit into
Open
Conversation
echopoison0712
pushed a commit
to echopoison0712/TradingAgents-CN
that referenced
this pull request
Jun 8, 2026
* feat: show related boards in stock reports (hsliuping#669) * fix: preserve unavailable related board states --------- Co-authored-by: mumu <42829555+ZhuLinsen@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request 模板
📋 PR 类型
请标记此 PR 的类型:
📖 PR 描述
变更摘要
新增区间分析功能:用户可以选择一个日期范围,系统自动识别其中的交易日并对同一股票并行执行多日分析,完成后汇总展示结果。同时在报告列表页新增批量删除功能。
为什么做这个改动:
目前系统仅支持对单只股票的单个交易日进行分析。但在实际使用中,用户经常需要观察同一只股票在一段时间内的分析结果变化趋势——例如查看某只股票在过去一周或一个月内,AI 每天给出的买入/卖出/持有建议是否一致,从而判断信号的稳定性和可信度。
现有流程下,用户只能手动逐日修改日期、反复提交分析,操作繁琐且耗时。区间分析功能让用户一次性选择日期范围,系统自动并行处理,大幅提升了多日分析的效率和体验。
变更详情
1. 区间分析功能(后端)
app/utils/trading_calendar.py:交易日历工具模块。A股优先通过 akshare (tool_trade_date_hist_sina) 获取真实交易日历(含缓存),失败时回退到工作日过滤;美股/港股使用工作日过滤。自动截断未来日期。DateRangeAnalysisRequest模型(app/models/analysis.py):包含symbol、start_date、end_date、parameters,兼容已有的stock_code字段。app/routers/analysis.py):GET /api/analysis/trading-days:预览指定日期范围内的交易日列表、数量及是否超限POST /api/analysis/date-range:提交区间分析。将每个交易日拆分为独立的SingleAnalysisRequest并行执行,通过asyncio.Semaphore+ 交错启动延迟控制并发,避免 LLM API 限流app/core/config.py):DATERANGE_MAX_CONCURRENT(默认 5):最大同时执行任务数DATERANGE_STAGGER_DELAY(默认 3.0s):任务间交错启动延迟DATERANGE_MAX_TRADING_DAYS(默认 30):单次区间分析最大交易日数2. 区间分析功能(前端)
SingleAnalysis.vue):新增「单日分析 / 区间分析」Radio 切换按钮,默认为单日分析GET /api/analysis/trading-days预览交易日数量和预估耗时,超限时禁用提交按钮并提示analysis.ts):新增DateRangeAnalysisRequest、DateRangeAnalysisResponse、DateRangeTaskMapping、TradingDaysPreview接口及startDateRangeAnalysis、getTradingDays调用函数3. 报告批量删除
Reports/index.vue)工具栏新增「删除」按钮,支持勾选多份报告后批量删除ElMessageBox.confirm二次确认弹窗,逐条调用DELETE /api/reports/{id}并统计成功/失败数,删除后自动刷新列表相关 Issue
无
🤖 LLM 适配器集成检查清单
🧪 测试说明
如何测试此 PR
区间分析功能:
000001),将分析模式从「单日分析」切换到「区间分析」报告批量删除功能:
测试环境
破坏性变更
新增的 API 端点和前端 UI 均为增量添加,未修改任何已有接口的签名或行为。原有的单日分析流程完全不受影响。
📊 影响范围
请标记此 PR 影响的组件:
🔗 相关链接
📷 截图/演示
✅ 检查清单
请确认以下项目:
代码质量
测试覆盖
文档更新
安全考虑
性能考虑
🏷️ 标签建议
请为此 PR 建议适当的标签:
enhancement- 新功能或改进bug- Bug 修复documentation- 文档相关refactor- 代码重构performance- 性能优化security- 安全相关llm-adapter- LLM 适配器ui/ux- 用户界面/体验config- 配置相关testing- 测试相关👥 审查者
建议的审查者:
@hsliuping
📝 额外说明
SingleAnalysisRequest和simple_analysis_service.execute_analysis_background基础设施,每个交易日本质上是一个独立的单日分析任务,区间分析只是在上层做了编排和并发控制。_a_share_trade_dates_cache),避免每次请求重复拉取。asyncio.Semaphore(限制同时运行数)+ 交错启动延迟(避免同一时刻大量请求涌入 LLM API)两层机制实现,三个相关参数均可通过配置文件/环境变量调整。感谢您的贡献! 🎉
请确保您已经阅读并遵循了我们的 贡献指南。如果您有任何问题,请随时在 PR 中提问或联系维护者。