Skip to content

Commit 390bb7a

Browse files
Pigbibiclaudecursoragent
authored
feat(telemetry): record platform executions in PerformanceMonitor (#312)
Wire try_record_platform_execution on rebalance cycle completion so live runs feed QPK drift/performance pipelines (roadmap task 5). Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 6f09b57 commit 390bb7a

1 file changed

Lines changed: 22 additions & 0 deletions

File tree

application/rebalance_service.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,31 @@
1717
translator_uses_zh as _base_translator_uses_zh,
1818
)
1919
from quant_platform_kit.common.strategy_plugins import attach_strategy_plugin_metadata
20+
from quant_platform_kit.strategy_lifecycle.performance_monitor import try_record_platform_execution
2021

2122
_DETAIL_FIELD_SPLIT_RE = re.compile(r"\s+(?=[^\s=::]+[=::])")
2223

2324

25+
def _record_platform_execution_telemetry(
26+
config: LongBridgeRebalanceConfig,
27+
execution_result: ExecutionCycleResult,
28+
) -> None:
29+
profile = str(getattr(config, "strategy_profile", "") or "").strip()
30+
if not profile:
31+
return
32+
execution = dict(execution_result.execution or {})
33+
try_record_platform_execution(
34+
profile,
35+
{
36+
"platform": "longbridge",
37+
"action_done": bool(execution_result.action_done),
38+
"effective_date": execution.get("effective_date"),
39+
"signal_date": execution.get("signal_date"),
40+
"dry_run_only": bool(getattr(config, "dry_run_only", False)),
41+
},
42+
)
43+
44+
2445
def _plan_portfolio(plan):
2546
return dict(plan.get("portfolio") or {})
2647

@@ -412,4 +433,5 @@ def fetch_replanned_state():
412433
)
413434
else:
414435
print(config.with_prefix("notification_suppressed reason=no_trade_or_error"), flush=True)
436+
_record_platform_execution_telemetry(config, execution_result)
415437
return execution_result

0 commit comments

Comments
 (0)