Fix OKX header trade stats stuck at zero after settings shell load.

Always SSR records summary on embed shell (including settings/risk/env), and refresh total/win-rate/PL ratio via account_snapshot so soft-nav cannot leave the strip blank.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-17 13:03:04 +08:00
parent 3a20546782
commit f27b4bc1ec
7 changed files with 72 additions and 5 deletions
+18 -2
View File
@@ -38,11 +38,11 @@ def embed_render_plan(page: str, embed_mode: str | None) -> EmbedRenderPlan:
)
is_shell = embed_mode == "shell"
is_strategy = page in EMBED_STRATEGY_PAGES
is_settings_like = page in ("settings", "risk_policy", "env_config")
return EmbedRenderPlan(
exchange_capitals=is_shell,
records_rows=page == "records",
records_summary=is_shell and page != "records" and not is_settings_like,
# 顶栏常驻:设置/风控/env 也要统计,否则首屏 SSR 为 0 后软切 tab 不会重绘顶栏
records_summary=is_shell and page != "records",
key_history=page == "key_monitor",
key_list=page in ("key_monitor", "trade") or is_strategy,
orders=page == "trade" or is_strategy,
@@ -157,5 +157,21 @@ def trade_records_summary(conn, start_bj: str, end_bj: str, tr_ts: str) -> dict[
}
def header_trade_stats_for_window(conn, list_window: dict[str, Any], app_tz) -> dict[str, Any]:
"""account_snapshot / 顶栏刷新:按当前列表窗返回总交易/胜率/盈亏比."""
from lib.common.history_window_lib import sql_list_time_field, utc_window_to_bj_sql_strings
start_bj, end_bj = utc_window_to_bj_sql_strings(
list_window["start_utc"], list_window["end_utc"], app_tz
)
tr_ts = sql_list_time_field("closed_at", "created_at", "opened_at")
summary = trade_records_summary(conn, start_bj, end_bj, tr_ts)
return {
"total": summary["total"],
"rate": summary["rate"],
"profit_loss_ratio": summary.get("profit_loss_ratio"),
}
def minimal_stats_bundle(reset_hour: int) -> dict[str, Any]:
return {"stats_reset_hour": reset_hour, "segments": []}