diff --git a/backend/app/services/strategy_service.py b/backend/app/services/strategy_service.py index 6c6f46b..7224256 100644 --- a/backend/app/services/strategy_service.py +++ b/backend/app/services/strategy_service.py @@ -328,16 +328,32 @@ def _validate_live_broker_session(user_id: str): if not broker_state.get("connected") or broker_name != "ZERODHA": return False, broker_state, "broker_not_connected" - session = get_session(user_id) + try: + session = get_session(user_id) + except Exception as exc: + print(f"[STRATEGY] failed to load Zerodha session for {user_id}: {exc}", flush=True) + set_broker_auth_state(user_id, "EXPIRED") + return False, broker_state, "broker_auth_required" + if not session: set_broker_auth_state(user_id, "EXPIRED") return False, broker_state, "broker_auth_required" + api_key = str(session.get("api_key") or "").strip() + access_token = str(session.get("access_token") or "").strip() + if not api_key or not access_token: + set_broker_auth_state(user_id, "EXPIRED") + return False, broker_state, "broker_auth_required" + try: - fetch_funds(session["api_key"], session["access_token"]) + fetch_funds(api_key, access_token) except KiteTokenError: set_broker_auth_state(user_id, "EXPIRED") return False, broker_state, "broker_auth_required" + except Exception as exc: + print(f"[STRATEGY] failed to validate Zerodha session for {user_id}: {exc}", flush=True) + set_broker_auth_state(user_id, "EXPIRED") + return False, broker_state, "broker_auth_required" set_broker_auth_state(user_id, "VALID") return True, broker_state, "ok" @@ -612,14 +628,28 @@ def resume_strategy(user_id: str): } if not engine_external: - engine_config = _build_engine_config(user_id, run_id, None) + try: + engine_config = _build_engine_config(user_id, run_id, None) + except Exception as exc: + return { + "status": "resume_failed", + "run_id": run_id, + "message": f"Unable to load the saved strategy state: {exc}", + } if not engine_config: return { "status": "resume_failed", "run_id": run_id, "message": "Saved strategy configuration is incomplete.", } - started = start_engine(engine_config) + try: + started = start_engine(engine_config) + except Exception as exc: + return { + "status": "resume_failed", + "run_id": run_id, + "message": f"Unable to resume the strategy engine: {exc}", + } if not started: return { "status": "resume_failed",