feat: 组合Tab展示v_mr精选版(v_mr_sel)真实数据, 删除被证伪的最超跌文案

- 后端: members优先读v_mr_sel(144笔/15.51%/90.3%), 无则回退v_mr基线
- 前端: 实盘链路文字改为精选规则描述(正面4因子+剔除4负面), 删最超跌
- 前端: v_mr卡片加精选版徽章标识
- 数据: v_mr_sel已存strategy_research(六步方法论推导结果)
This commit is contained in:
xxm
2026-08-03 00:58:40 +08:00
parent 5594e404dc
commit a4dd139fc1
2 changed files with 18 additions and 7 deletions
+16 -5
View File
@@ -108,13 +108,22 @@ def get_combo_dashboard():
combos.append(d)
# 3. 组合成员策略的独立指标
# v_mr 优先取精选版 v_mr_sel(六步方法论调优,2026-08-02),无则回退基线 v_mr
members = {}
for v in ["v_next4", "v_mr"]:
r = conn.execute(
"SELECT results_json FROM strategy_research"
" WHERE version=? AND period_tag='10y' ORDER BY id DESC LIMIT 1",
(v,),
).fetchone()
sel_v = "v_mr_sel" if v == "v_mr" else None
candidates = [sel_v, v] if sel_v else [v]
r = None
used_sel = False
for cv in candidates:
r = conn.execute(
"SELECT results_json FROM strategy_research"
" WHERE version=? AND period_tag='10y' ORDER BY id DESC LIMIT 1",
(cv,),
).fetchone()
if r:
used_sel = (cv == sel_v)
break
if r:
res = json.loads(r[0])
s = res.get("summary", {})
@@ -122,6 +131,8 @@ def get_combo_dashboard():
p5 = s.get("portfolio", {})
members[v] = {
"role": "趋势市主战" if v == "v_next4" else "震荡/下跌市接管",
"version": "v_mr_sel" if used_sel else "v_mr",
"is_sel": used_sel,
"trades": s.get("total_trades"),
"win_rate": s.get("win_rate"),
"avg_profit_pct": s.get("avg_profit_pct"),