v3.22.0
发布亮点
- feat: 新增 DecisionSignal 独立存储与 API、运行流快照 API 和 Web 运行流视图,补齐建议动作结构化字段与历史/回测展示链路。
- feat: AlphaSift 热点题材链路升级为新版合约,支持热点榜单、题材详情、发酵路线、概念股详情、缓存与兜底数据源。
- feat: 个股分析默认注入当日大盘环境摘要,并在高风险/退潮环境下软化激进买入建议。
- fix: 修复问股历史追问标的上下文、自选股等价代码匹配、低质量新闻过滤、运行流脱敏与 AlphaSift 热点详情展示等稳定性问题。
新功能
- 新增独立
DecisionSignal存储、Repository、Service 与/api/v1/decision-signalsAPI,支持来源/市场/股票/动作/期限/阶段去重、查询、续期、状态更新、懒过期、持仓过滤和敏感信息脱敏。 - 新增分析任务与历史报告运行流快照 API,提供 lanes、nodes、edges、events、summary 等统一契约,并从任务队列、运行诊断和 AnalysisContextPack overview 构建脱敏数据流/信息流。
- Web 端为活跃任务、历史报告和大盘复盘报告补充运行流视图入口,支持查看运行摘要、拓扑节点、事件流和基础排障详情。
- 新增 AlphaSift 热点题材链路:后端提供
/api/v1/alphasift/hotspots与/api/v1/alphasift/hotspots/{topic}API,Web 选股页新增热点题材区域并支持发酵路线与概念股查看。
改进
- 个股分析新增按当日/市场复用的大盘环境摘要,普通 Pipeline 与 Agent 分析 Prompt 可读取低敏大盘背景;新增默认开启的
DAILY_MARKET_CONTEXT_ENABLED配置,用户仍可显式关闭。 - 个股分析与历史/回测展示新增可选八态
action/action_label建议动作字段,保留operation_advice自由文本和decision_type=buy|hold|sell统计口径。 - 补充 Web decision-signals typed API wrapper 与契约隔离测试,暂不接入 UI。
- 完善运行时日志上下文,补充 logger name、触发来源、市场统计与实时行情预取链路状态,便于排查调度、API、Bot 和数据源降级路径。
- 持仓管理页新增持仓账户删除入口,复用现有账户软删除接口,误建账户会从默认列表、快照、风险、录入入口和事件列表隐藏且不物理清理历史流水。
- AlphaSift 依赖锁定更新到
d038c52c468543726fc1fd830b53c27d3f09d6da,并为新版 last-good snapshot、日线历史、行业/概念 provider cache、hotspot 榜单、题材发酵路线、概念股详情、上次成功热点缓存与 post-analysis 元信息补齐 DSA 运行期和 Web 适配。 - AlphaSift 热点题材读取默认优先使用上次成功缓存,手动刷新才实时拉取并覆盖缓存,实时拉取失败时尽量回退旧缓存。
- AlphaSift 热点题材区域改为默认折叠,展开并选中具体题材后再读取详情;发酵路线改为带时间标记的时间线展示,概念股可点击进入首页并直接启动分析。
- AlphaSift 热点题材数据链路复用同一次东方财富板块异动快照,并从真实涨跌幅、异动次数和高频个股推导趋势分、持续分、阶段与龙头样本。
- AlphaSift 热点题材刷新在合约层返回少量或缺少关键字段时改用 DSA 东方财富板块异动直连榜单,忽略少于 3 条的本地热点缓存,并补齐板块兜底字段。
- AlphaSift 热点题材卡片改为更紧凑的多列布局,概念股列表改为独立“分析”按钮触发个股分析;详情优先合并东方财富成分股、同花顺解析和板块异动龙头兜底并按日聚合发酵时间线。
- AlphaSift 热点题材详情新增 DSA 侧 30 分钟磁盘缓存,重复点开同一题材时复用发酵时间线与概念股详情;题材事件仅展示 AlphaSift 合约时间线、同花顺摘要、已配置新闻搜索或东财板块异动等真实来源。
- AlphaSift 热点题材消息催化改为摘要展示:配置 LLM 时优先压缩为一句题材催化摘要,未配置或调用失败时回退本地短摘要。
- AlphaSift 热点题材列表新增可选
include_details详情预取,Web 默认随热点列表批量带回 Top 题材发酵路线与概念股并复用前端内存缓存;新闻催化在 LLM 不可用时改为本地事件归纳。 - 改造
main.py --webui-only启动行为:若 FastAPI 监听端口已被占用,启动即 fail-fast 抛出明确错误并退出。
修复
- 问股从历史报告进入后的追问会持续携带当前标的,切回或重载已有会话时可从历史消息恢复基础当前标的,并由后端阻断未明确切换时的错误股票工具调用、交易所片段和指标缩写误路由。
- 自选股加入和删除按等价股票代码匹配港股及大小写美股变体,避免
00700、HK00700、00700.HK或aapl、AAPL被误判为不同标的。 - 收紧建议动作 legacy fallback:否定/回避表达、中文金融上下文、
buy or sell、多 guard 歧义文本以及英文复合词不再误渲染成 action badge;有结构化action时回测/历史趋势等入口按界面语言显示 action 标签。 - 股票新闻与多维情报搜索在相关度排序后新增域名无关的准入过滤,剔除下载/安装包/应用评分页及成人/招嫖服务垃圾页,并在同批已有有效标的/行业候选时移除
score=0背景填充项。 - 修复历史报告运行流快照在混合时区事件时间戳下返回 500 的问题。
- 修复运行流 live SSE 事件未复用快照层递归脱敏规则的问题,避免本地路径、prompt/raw response、代理头等敏感诊断字段在 refetch 前短暂暴露。
- AlphaSift 热点题材默认加载在无缓存且旧适配层缺少
alphasift.hotspot模块时返回空态,不再一打开选股页就显示 AlphaSift 未就绪;手动刷新仍会提示依赖需更新。 - 为 THS 发酵路线补充列名兜底:当
stock_board_concept_summary_ths返回缺列时仅跳过该来源富化,不影响热点题材详情 API 返回。 - 桌面发布打包改用冻结可执行文件运行时探针校验
alphasift.dsa_adapter,避免 macOS PyInstaller 将模块内嵌进可执行文件时被文件系统/zip 扫描误判为缺失。 - AlphaSift 热点题材详情展示改为优先使用后端融合后的
route,避免旧timeline覆盖新闻/LLM 摘要;手动刷新热点榜单时会同步绕过同题材详情缓存。
文档
- README 与繁中 README 快速开始入口补充视频教程链接,并将桌面客户端入口文案调整为客户端配置教程。
- 补充
docs/alphasift-integration.md:明确 AlphaSift 锁定 commit 来源、Hotspot 契约边界、LLM/LiteLLM 兼容语义与关闭开关下回退路径。 - 补充 #1381 运行时范围、兼容边界、官方语义依据与常规发布回滚说明。
测试
- 覆盖 #1381 后端 runtime 与兼容核验:
tests/test_main_schedule_mode.py、tests/test_pipeline_daily_market_context.py、tests/test_daily_market_context.py、tests/test_daily_market_context_guardrail.py、tests/test_agent_executor.py、tests/test_config_env_compat.py、tests/test_config_registry.py与apps/dsa-web/tests/system_config_i18n.test.ts。 - 新增/更新 AlphaSift 后端回归:
python -m pytest tests/test_alphasift_api.py -q、python -m pytest tests/test_docker_entrypoint.py -q、python -m pytest tests/test_main_schedule_mode.py -q -k "start_api_server_fails_before_thread_when_port_is_busy"。
What's Changed
🤖 AI & Analysis
- fix: clarify runtime logging context by @Activer007 in #1643
- feat:[issue #1652] add web run-flow viewer by @Activer007 in #1654
- feat: [issue #1652] add live run-flow diagnostics by @Activer007 in #1656
- feat: adapt AlphaSift hotspot topics by @ZhuLinsen in #1635
- feat: 个股分析接入当日大盘上下文 by @ZhuLinsen in #1623
- feat: [issue #1652] improve run-flow topology drilldown by @Activer007 in #1657
- feat: 默认启用每日大盘上下文 by @ZhuLinsen in #1673
⚙️ Configuration
- feat: adapt AlphaSift hotspot contract by @ZhuLinsen in #1675
🧪 Testing
- fix: 锁定问股追问的当前标的上下文 P2 by @massif-01 in #1619
- feat: 新增 DecisionSignal 持久化 API(#1390 P1) by @massif-01 in #1645
- feat: add portfolio account archive action 持仓管理页面添加账户删除功能 by @volcanoAlbert in #1647
- feat: [issue #1652] add run-flow snapshot contract and APIs by @Activer007 in #1653
- 改进: 补充 #1390 P1 DecisionSignal 前端契约与隔离测试 by @massif-01 in #1666
- fix: avoid AlphaSift hotspot import on cache miss by @ZhuLinsen in #1671
- fix: 过滤低质量股票新闻结果 by @ZhuLinsen in #1674
- fix: optimize AlphaSift hotspot details by @ZhuLinsen in #1677
📝 Documentation
- docs: add README tutorial links by @ZhuLinsen in #1676
New Contributors
- @volcanoAlbert made their first contribution in #1647
Full Changelog: v3.21.1...v3.22.0