fix: 证伪标记数据驱动——strategy_research加deprecated字段,前后端从数据读(替代硬编码),strategy_router排除证伪策略

This commit is contained in:
hmo
2026-08-15 08:21:06 +08:00
parent 70687f4bf1
commit 6ad5c30ab1
3 changed files with 60 additions and 11 deletions
+15
View File
@@ -567,11 +567,26 @@ def api_research_strategies():
_c.close()
except Exception:
pass
# 2026-08-15 证伪标记(数据驱动):strategy_research.deprecated
_deprecated = {}
try:
import sqlite3 as _sq2
_c2 = _sq2.connect(str(DATA_DIR / "mofin.db"), timeout=10)
for _r in _c2.execute(
"SELECT version, MAX(deprecated) FROM strategy_research "
"WHERE deprecated IS NOT NULL AND deprecated != '' GROUP BY version"
).fetchall():
_deprecated[_r[0]] = _r[1]
_c2.close()
except Exception:
pass
for s in strats:
s['description'] = STRATEGY_DESCRIPTIONS.get(s['version'], {})
s['regime_winrates'] = _regime_winrates.get(s['version'], {})
# current = 当前温区激活(替代旧的 CURRENT_VERSIONS 硬编码)
s['current'] = s['version'] in _active_set
# 2026-08-15 证伪数据驱动:从 strategy_research.deprecated 读(替代前端硬编码)
s['deprecated'] = _deprecated.get(s['version'])
# 2026-08-13 关键修复:激活策略必须始终在列表中(即使该 period 无回测记录)
# 否则 2y 等默认周期下激活策略缺失(只显示 v_oversold)。