feat(hub): trend plan breakeven and stop from monitor fullscreen

Proxy /api/hub/trend/stop and breakeven to instances; enable offset input and actions in hub UI. Add horizontal padding on strategy records page.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-04 14:46:24 +08:00
parent 52d97482f2
commit f9301b92b9
8 changed files with 253 additions and 14 deletions
+24 -1
View File
@@ -53,6 +53,7 @@ def install_strategy_trend(app: Flask, repo_root: str, app_module: Any = None, *
app.extensions["strategy_trend_cfg"] = cfg
register_trend_routes(app, cfg)
_patch_hub_monitor_enrich(app, cfg)
_patch_hub_trend_views(app)
@app.context_processor
def _trend_ctx():
@@ -391,6 +392,23 @@ def enrich_trend_plan_for_hub(cfg: dict, raw: dict) -> dict:
return d
def _patch_hub_trend_views(app: Flask) -> None:
"""将趋势回调路由注册进 HUB_CTX.views,供中控 /api/hub/trend/* 调用。"""
ctx = dict(app.config.get("HUB_CTX") or {})
views = dict(ctx.get("views") or {})
for name in (
"preview_trend_pullback",
"execute_trend_pullback",
"stop_trend_pullback",
"trend_pullback_breakeven",
):
vf = app.view_functions.get(name)
if vf is not None:
views[name] = vf
ctx["views"] = views
app.config["HUB_CTX"] = ctx
def _patch_hub_monitor_enrich(app: Flask, cfg: dict) -> None:
ctx = dict(app.config.get("HUB_CTX") or {})
prev = ctx.get("enrich_monitor")
@@ -465,7 +483,12 @@ def enrich_trend_plan(cfg: dict, row) -> dict:
d["floating_pnl"] = d["floating_mark"] = None
from strategy_snapshot_lib import attach_trend_dca_levels
return attach_trend_dca_levels(d)
d = attach_trend_dca_levels(d)
try:
d["breakeven_default_offset_pct"] = float(cfg.get("breakeven_offset_pct", 0.3))
except (TypeError, ValueError):
d["breakeven_default_offset_pct"] = 0.3
return d
def _weighted_avg(old_avg, old_amt, fill_px, add_amt):