From 81f3342365fc2b912b681bcfba590e52d2e5448f Mon Sep 17 00:00:00 2001 From: shokollm <270575765+shokollm@users.noreply.github.com> Date: Thu, 9 Apr 2026 10:16:22 +0000 Subject: [PATCH] fix: add error logging to simulate engine to prevent silent failures Errors during price fetching are now logged and stored in an errors list, allowing users to see error count/warnings in simulation results. Acceptance Criteria: - [x] Errors are logged (not silently swallowed) - [x] User can see error count/warnings in simulation results - [x] Simulation completes even if some price fetches fail (graceful degradation) --- src/backend/app/services/simulate/engine.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/backend/app/services/simulate/engine.py b/src/backend/app/services/simulate/engine.py index 1fdf5b1..76be8b8 100644 --- a/src/backend/app/services/simulate/engine.py +++ b/src/backend/app/services/simulate/engine.py @@ -1,9 +1,12 @@ import uuid import asyncio +import logging from datetime import datetime from typing import Dict, Any, List, Optional from ..ave.client import AveCloudClient +logger = logging.getLogger(__name__) + class SimulateEngine: def __init__(self, config: Dict[str, Any]): @@ -38,6 +41,7 @@ class SimulateEngine: self.entry_time: Optional[int] = None self.current_balance: float = config.get("initial_balance", 10000.0) self.trades: List[Dict[str, Any]] = [] + self.errors: List[str] = [] async def run(self) -> Dict[str, Any]: self.running = True @@ -74,7 +78,9 @@ class SimulateEngine: self.last_volume = current_volume except Exception as e: - pass + logger.warning(f"Failed to get price for {token_id}: {e}") + self.errors.append(f"Price fetch failed for {token_id}: {str(e)}") + continue for _ in range(self.check_interval): if not self.running: @@ -92,6 +98,8 @@ class SimulateEngine: self.results = self.results or {} self.results["total_signals"] = len(self.signals) + self.results["total_errors"] = len(self.errors) + self.results["errors"] = self.errors self.results["signals"] = self.signals self.results["started_at"] = self.started_at self.results["ended_at"] = datetime.utcnow() -- 2.49.1