Fix: Onboarding Completion Service Update

This commit is contained in:
ajaysi
2025-10-12 16:03:52 +05:30
parent 8851e6ee9b
commit 20b01717cd
4 changed files with 34 additions and 13 deletions

2
.gitignore vendored
View File

@@ -81,6 +81,8 @@ backend/research_cache.db
gsc_credentials.json
**/gsc_credentials.json
.cursor
# Onboarding progress files
.onboarding_progress.json
backend/.onboarding_progress.json

View File

@@ -156,10 +156,10 @@ class OnboardingManager:
raise HTTPException(status_code=500, detail=str(e))
@self.app.get("/api/onboarding/api-keys/onboarding")
async def api_keys_for_onboarding():
async def api_keys_for_onboarding(current_user: dict = Depends(get_current_user)):
"""Get all configured API keys for onboarding (unmasked)."""
try:
return await get_api_keys_for_onboarding()
return await get_api_keys_for_onboarding(current_user)
except Exception as e:
logger.error(f"Error in api_keys_for_onboarding: {e}")
raise HTTPException(status_code=500, detail=str(e))

View File

@@ -70,20 +70,38 @@ class APIKeyManagementService:
logger.error(f"Error getting API keys: {str(e)}")
raise HTTPException(status_code=500, detail="Internal server error")
async def get_api_keys_for_onboarding(self) -> Dict[str, Any]:
"""Get all configured API keys for onboarding (unmasked)."""
try:
self.api_key_manager.load_api_keys() # Load keys from environment
api_keys = self.api_key_manager.api_keys # Get the loaded keys
async def get_api_keys_for_onboarding(self, user_id: str | None = None) -> Dict[str, Any]:
"""Get all configured API keys for onboarding (unmasked), user-aware.
# Return actual API keys for onboarding pre-filling
result = {
In production, keys are per-user and stored in DB; in local, we use env.
"""
try:
# Prefer DB per-user keys when user_id is provided and DB is available
if user_id and getattr(self.api_key_manager, 'use_database', False) and getattr(self.api_key_manager, 'db_service', None):
try:
from services.database import SessionLocal
db = SessionLocal()
try:
api_keys = self.api_key_manager.db_service.get_api_keys(user_id, db) or {}
logger.info(f"Loaded {len(api_keys)} API keys from database for user {user_id}")
return {
"api_keys": api_keys,
"total_providers": len(api_keys),
"configured_providers": [k for k, v in api_keys.items() if v]
}
finally:
db.close()
except Exception as db_err:
logger.warning(f"DB lookup for API keys failed, falling back to env: {db_err}")
# Fallback: load from environment/in-memory
self.api_key_manager.load_api_keys()
api_keys = self.api_key_manager.api_keys
return {
"api_keys": api_keys,
"total_providers": len(api_keys),
"configured_providers": [k for k, v in api_keys.items() if v]
}
return result
except Exception as e:
logger.error(f"Error getting API keys for onboarding: {str(e)}")
raise HTTPException(status_code=500, detail="Internal server error")

View File

@@ -25,11 +25,12 @@ async def get_api_keys():
raise HTTPException(status_code=500, detail="Internal server error")
async def get_api_keys_for_onboarding():
async def get_api_keys_for_onboarding(current_user: dict = None):
try:
from api.onboarding_utils.api_key_management_service import APIKeyManagementService
api_service = APIKeyManagementService()
return await api_service.get_api_keys_for_onboarding()
user_id = str(current_user.get('id')) if current_user and current_user.get('id') else None
return await api_service.get_api_keys_for_onboarding(user_id)
except Exception as e:
logger.error(f"Error getting API keys for onboarding: {str(e)}")
raise HTTPException(status_code=500, detail="Internal server error")