cli+dashboard: --panel flag, panel dict keys, TF-dialog panel section
main.py: --panel runs the agent panel on demand (force bypasses enabled/surface/quality toggles; daily budget + LLM cap still apply), prints the verdict + persona takes, and report_to_dict carries the four panel keys — which auto-propagates them into the dashboard's snapshot.json via report_to_webapp_dict. dashboard_publisher attaches in scan_tf gated by agent_panel.dashboard (default off); dashboard.html renders an "AI panel (advisory)" section in the TF detail dialog. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SisdfkxnXNL9iZsXxN3T15
This commit is contained in:
@@ -49,6 +49,7 @@ from datetime import datetime, timezone
|
||||
from logging.handlers import TimedRotatingFileHandler
|
||||
from typing import Dict, List, Optional
|
||||
|
||||
from agent_panel import attach_panel
|
||||
from config import PlatformConfig, Timeframe, XAUUSD
|
||||
from main import report_to_dict
|
||||
from news_engine import NewsEngine
|
||||
@@ -357,6 +358,13 @@ class DashboardPublisher:
|
||||
try:
|
||||
report = produce_signal(XAUUSD, tf, self._provider(),
|
||||
CONFIRMATIONS[tf])
|
||||
# Advisory AI panel, post-hoc and display-only. Off unless
|
||||
# config.json agent_panel.dashboard is true. The reuse-TTL
|
||||
# cache + max_panels_per_day budget bound the spend against
|
||||
# this process's own DeepSeek cap (a persisting M5 signal
|
||||
# re-serves its cached verdict instead of re-running every
|
||||
# bar); a fresh panel adds ≤~25 s before this TF publishes.
|
||||
attach_panel(report, surface="dashboard")
|
||||
self.snapshots[tf.value] = {
|
||||
"status": "ok",
|
||||
"scanned_at": datetime.now(timezone.utc).isoformat(),
|
||||
|
||||
Reference in New Issue
Block a user