修复实盘顶栏误显示模拟盘会话资金:无交易所余额时显示 —,切模式清缓存。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-10-04 09:16:45 +08:00
parent e33d289e39
commit 131bb36930
5 changed files with 65 additions and 6 deletions
+7
View File
@@ -71,6 +71,13 @@ def apply_env_reload(env_path: str, get_db: Callable, changed_keys: list[str], g
set_trading_mode(get_db, raw)
except Exception:
pass
# 清余额缓存,避免模拟盘资金残留到实盘顶栏
try:
from app import invalidate_account_balance_cache
invalidate_account_balance_cache()
except Exception:
pass
from lib.env.env_schema import updates_need_restart
return {"restart_required": updates_need_restart(groups, changed_keys)}
@@ -1212,9 +1212,13 @@ function applyAccountSnapshot(data){
applyOptionsFundsVisibility(!coinMode);
if(data.funding_usdt != null && data.funding_usdt !== ""){
setFundsFieldText("total-capital", `${Number(data.funding_usdt).toFixed(2)}U`);
} else if("funding_usdt" in data){
setFundsFieldText("total-capital", "—");
}
if(data.total_funds != null && data.total_funds !== ""){
setFundsFieldText("total-funds", `${Number(data.total_funds).toFixed(2)}U`);
} else if("total_funds" in data){
setFundsFieldText("total-funds", "—");
}
if(data.current_capital != null && data.current_capital !== "" && !Number.isNaN(Number(data.current_capital))){
setFundsFieldText(
@@ -1226,6 +1230,16 @@ function applyAccountSnapshot(data){
data.options_margin_mode
)
);
} else if("current_capital" in data){
setFundsFieldText(
"current-capital",
formatTradingAccountLabel(
null,
data.options_trading_eth,
data.options_trading_btc,
data.options_margin_mode
)
);
}
if(!coinMode && (data.options_funding_usdc != null || data.options_funding_usdt != null || data.options_funding_eth != null)){
const optFunding = formatOptionsFundingLabel(
+14
View File
@@ -1691,9 +1691,13 @@ function applyAccountSnapshot(data){
applyOptionsFundsVisibility(!coinMode);
if(data.funding_usdt != null && data.funding_usdt !== ""){
setFundsFieldText("total-capital", `${Number(data.funding_usdt).toFixed(2)}U`);
} else if("funding_usdt" in data){
setFundsFieldText("total-capital", "—");
}
if(data.total_funds != null && data.total_funds !== ""){
setFundsFieldText("total-funds", `${Number(data.total_funds).toFixed(2)}U`);
} else if("total_funds" in data){
setFundsFieldText("total-funds", "—");
}
if(data.current_capital != null && data.current_capital !== "" && !Number.isNaN(Number(data.current_capital))){
setFundsFieldText(
@@ -1705,6 +1709,16 @@ function applyAccountSnapshot(data){
data.options_margin_mode
)
);
} else if("current_capital" in data){
setFundsFieldText(
"current-capital",
formatTradingAccountLabel(
null,
data.options_trading_eth,
data.options_trading_btc,
data.options_margin_mode
)
);
}
if(!coinMode && (data.options_funding_usdc != null || data.options_funding_usdt != null || data.options_funding_eth != null)){
const optFunding = formatOptionsFundingLabel(
+6
View File
@@ -92,6 +92,12 @@ def install_sim_trading(app: Flask, repo_root: str, app_module: Any = None) -> N
saved = set_trading_mode(get_db, mode)
except ValueError as e:
return jsonify({"ok": False, "msg": str(e)}), 400
try:
from app import invalidate_account_balance_cache
invalidate_account_balance_cache()
except Exception:
pass
return jsonify({"ok": True, "mode": saved, **_status_payload()})
@app.route("/api/sim/reset", methods=["POST"])