diff --git a/backend/app/services/strategy_service.py b/backend/app/services/strategy_service.py index dbb4a0b..3f4bb6d 100644 --- a/backend/app/services/strategy_service.py +++ b/backend/app/services/strategy_service.py @@ -711,21 +711,25 @@ def get_strategy_status(user_id: str): run_id = running_run_id or get_active_run_id(user_id) cfg = _load_config(user_id, run_id) if run_id else {} default_status = "RUNNING" if running_run_id else ("STOPPED" if run_id else "IDLE") + engine_row = None with db_connection() as conn: with conn.cursor() as cur: cur.execute( - "SELECT last_updated FROM engine_status WHERE user_id = %s AND run_id = %s", + "SELECT status, last_updated FROM engine_status WHERE user_id = %s AND run_id = %s", (user_id, run_id), ) - row = cur.fetchone() - if not row: + engine_row = cur.fetchone() + if not engine_row: status = {"status": default_status, "last_updated": None} else: status = { "status": default_status, - "last_updated": _format_local_ts(row[0]), + "last_updated": _format_local_ts(engine_row[1]), } status["run_id"] = run_id + engine_state = str((engine_row or [None])[0] or "").strip().upper() + if running_run_id and engine_state in {"STOPPED", "ERROR"}: + status["status"] = "STOPPED" sip_frequency = cfg.get("sip_frequency") if not isinstance(sip_frequency, dict): frequency = cfg.get("frequency")