diff --git a/web/component_manager.py b/web/component_manager.py index eeaf676..521436a 100644 --- a/web/component_manager.py +++ b/web/component_manager.py @@ -23,13 +23,25 @@ class DashboardComponentManager: signals = [] for decision in recent_decisions[-10:]: # Last 10 signals - timestamp = decision.get('timestamp', 'Unknown') - action = decision.get('action', 'UNKNOWN') - confidence = decision.get('confidence', 0) - price = decision.get('price', 0) - executed = decision.get('executed', False) - blocked = decision.get('blocked', False) - manual = decision.get('manual', False) + # Handle both TradingDecision objects and dictionary formats + if hasattr(decision, 'timestamp'): + # This is a TradingDecision object (dataclass) + timestamp = getattr(decision, 'timestamp', 'Unknown') + action = getattr(decision, 'action', 'UNKNOWN') + confidence = getattr(decision, 'confidence', 0) + price = getattr(decision, 'price', 0) + executed = getattr(decision, 'executed', False) + blocked = getattr(decision, 'blocked', False) + manual = getattr(decision, 'manual', False) + else: + # This is a dictionary format + timestamp = decision.get('timestamp', 'Unknown') + action = decision.get('action', 'UNKNOWN') + confidence = decision.get('confidence', 0) + price = decision.get('price', 0) + executed = decision.get('executed', False) + blocked = decision.get('blocked', False) + manual = decision.get('manual', False) # Determine signal style if executed: @@ -83,13 +95,25 @@ class DashboardComponentManager: # Create table rows rows = [] for trade in closed_trades[-20:]: # Last 20 trades - entry_time = trade.get('entry_time', 'Unknown') - side = trade.get('side', 'UNKNOWN') - size = trade.get('size', 0) - entry_price = trade.get('entry_price', 0) - exit_price = trade.get('exit_price', 0) - pnl = trade.get('pnl', 0) - fees = trade.get('fees', 0) + # Handle both trade objects and dictionary formats + if hasattr(trade, 'entry_time'): + # This is a trade object + entry_time = getattr(trade, 'entry_time', 'Unknown') + side = getattr(trade, 'side', 'UNKNOWN') + size = getattr(trade, 'size', 0) + entry_price = getattr(trade, 'entry_price', 0) + exit_price = getattr(trade, 'exit_price', 0) + pnl = getattr(trade, 'pnl', 0) + fees = getattr(trade, 'fees', 0) + else: + # This is a dictionary format + entry_time = trade.get('entry_time', 'Unknown') + side = trade.get('side', 'UNKNOWN') + size = trade.get('size', 0) + entry_price = trade.get('entry_price', 0) + exit_price = trade.get('exit_price', 0) + pnl = trade.get('pnl', 0) + fees = trade.get('fees', 0) # Format time if isinstance(entry_time, datetime):