fix(backtest): degenerate改status=done+flag—前端status map兼容

degenerate 原为独立 status 值,但前端 statusLabelMap 只认 done/failed/running/pending,
21个零成交结果在 Dashboard 计数/History 筛选/chip 标签消失或空白。改 status='done'+
statistics.degenerate=True+reason,结果页诚实显示 0+空成交,列表/计数正常。
This commit is contained in:
2026-07-13 11:56:23 +08:00
parent 8d55e414fa
commit b322f4e07b
+6 -2
View File
@@ -225,6 +225,9 @@ def run_cta_backtest(
elif daily_df is None or (hasattr(daily_df, "empty") and daily_df.empty):
_degenerate_reason = "日度盈亏数据为空"
if _degenerate_reason:
# 标 degenerate flagstatus 仍为 done,避免前端 status map 不认导致列表/计数异常;
# 结果页据 trades=0 + statistics.degenerate 自然呈现"零成交"诚实状态)
statistics["degenerate"] = True
statistics["degenerate_reason"] = _degenerate_reason
logging.warning("回测退化: %s (symbol=%s strategy=%s)", _degenerate_reason, symbol, strategy_class.__name__)
@@ -316,11 +319,12 @@ def run_cta_backtest(
for t in trades_dict.values()
])
# Build result object — H7: degenerate 时标记状态(不静默 done
# Build result object — H7: degenerate 走 status="done" + statistics.degenerate flag
# (不发明新 status 值,前端 status map 只认 done/failed/running/pending
result = BacktestResult(
task_id=task_id,
type="cta",
status="degenerate" if _degenerate_reason else "done",
status="done",
strategy=strategy_class.__name__,
symbol=symbol,
params=params,