PR #86(D-12 信号多样性 + 优化循环)5 轮 CR 收敛时记下的遗留项,均非该 PR 范围、不阻塞,单独跟进。
1. _confidence_cap 改为返回值传递(消除可变实例状态)
Analyst.run() 依赖 build_user_prompt 先设置 self._confidence_cap,是隐式时序依赖。当前安全(runner.py 每次 deep_dive 新建实例、每实例一次 run()),但若未来加重试/缓存实例/装饰器绕过 build_user_prompt,cap 会变 None 或残留上次值,静默不 clamp。
- 修法:
build_user_prompt 返回 tuple[str, float | None](user_prompt, cap),run() 从返回值读 cap。
- 影响面:
analysts/base.py abstract 签名 + technical/fundamental/macro/risk/sentiment/valuation + persona base 共 ~7 处。
2. akshare 8 个财务质量字段接入 _FINANCIAL_LABELS(供应链红旗渲染)
connectors/akshare.py 已 fetch operating_cashflow / ocf_per_share / inventory_turnover / inventory_days / receivables_turnover / receivables_days / current_ratio / quick_ratio,但 analysts/utils.py:_FINANCIAL_LABELS 没这些 key → render_financial_indicators 永远不渲染 → LLM 看不到,serenity「供应链瓶颈红旗检查」形同虚设。
- 修法:补 label;注意
current_ratio / quick_ratio 是倍数不是百分比,不进 _FINANCIAL_PCT_KEYS;operating_cashflow 金额需决定 B/M 格式化。
- 属 serenity 供应链方法论那条线的渲染设计,需定哪些该进 prompt。
3. BacktestRequest._exactly_one_strategy_source 互斥用 is not None
PR #86 已修 SensitivityRequest 的 bool(strategy_id) → is not None(strategy_id="" 误判),但 schemas.py 里 BacktestRequest(D-9 既有)还是 bool(),同款问题。
- 修法:一行,与 SensitivityRequest 对齐。
来源:PR #86 第 3/4/5 轮 CR;merge commit 84b8748。
PR #86(D-12 信号多样性 + 优化循环)5 轮 CR 收敛时记下的遗留项,均非该 PR 范围、不阻塞,单独跟进。
1.
_confidence_cap改为返回值传递(消除可变实例状态)Analyst.run()依赖build_user_prompt先设置self._confidence_cap,是隐式时序依赖。当前安全(runner.py每次 deep_dive 新建实例、每实例一次run()),但若未来加重试/缓存实例/装饰器绕过build_user_prompt,cap 会变 None 或残留上次值,静默不 clamp。build_user_prompt返回tuple[str, float | None](user_prompt, cap),run()从返回值读 cap。analysts/base.pyabstract 签名 + technical/fundamental/macro/risk/sentiment/valuation + persona base 共 ~7 处。2. akshare 8 个财务质量字段接入
_FINANCIAL_LABELS(供应链红旗渲染)connectors/akshare.py已 fetchoperating_cashflow / ocf_per_share / inventory_turnover / inventory_days / receivables_turnover / receivables_days / current_ratio / quick_ratio,但analysts/utils.py:_FINANCIAL_LABELS没这些 key →render_financial_indicators永远不渲染 → LLM 看不到,serenity「供应链瓶颈红旗检查」形同虚设。current_ratio/quick_ratio是倍数不是百分比,不进_FINANCIAL_PCT_KEYS;operating_cashflow金额需决定 B/M 格式化。3.
BacktestRequest._exactly_one_strategy_source互斥用is not NonePR #86 已修
SensitivityRequest的bool(strategy_id)→is not None(strategy_id=""误判),但schemas.py里BacktestRequest(D-9 既有)还是bool(),同款问题。来源:PR #86 第 3/4/5 轮 CR;merge commit 84b8748。