Added onboarding progress tracking & landing page

This commit is contained in:
ajaysi
2025-10-02 13:20:15 +05:30
parent e57d2577f8
commit 510b79bbf8
135 changed files with 25917 additions and 5768 deletions

View File

@@ -0,0 +1,127 @@
"""
Onboarding Configuration Service
Handles onboarding configuration and provider setup information.
"""
from typing import Dict, Any
from fastapi import HTTPException
from loguru import logger
from services.api_key_manager import get_api_key_manager
from services.validation import check_all_api_keys
class OnboardingConfigService:
"""Service for handling onboarding configuration and provider setup."""
def __init__(self):
self.api_key_manager = get_api_key_manager()
def get_onboarding_config(self) -> Dict[str, Any]:
"""Get onboarding configuration and requirements."""
return {
"total_steps": 6,
"steps": [
{
"number": 1,
"title": "AI LLM Providers",
"description": "Configure AI language model providers",
"required": True,
"providers": ["openai", "gemini", "anthropic"]
},
{
"number": 2,
"title": "Website Analysis",
"description": "Set up website analysis and crawling",
"required": True
},
{
"number": 3,
"title": "AI Research",
"description": "Configure AI research capabilities",
"required": True
},
{
"number": 4,
"title": "Personalization",
"description": "Set up personalization features",
"required": False
},
{
"number": 5,
"title": "Integrations",
"description": "Configure ALwrity integrations",
"required": False
},
{
"number": 6,
"title": "Complete Setup",
"description": "Finalize and complete onboarding",
"required": True
}
],
"requirements": {
"min_api_keys": 1,
"required_providers": ["openai"],
"optional_providers": ["gemini", "anthropic"]
}
}
async def get_provider_setup_info(self, provider: str) -> Dict[str, Any]:
"""Get setup information for a specific provider."""
try:
providers_info = self.get_all_providers_info()
if provider in providers_info:
return providers_info[provider]
else:
raise HTTPException(status_code=404, detail=f"Provider {provider} not found")
except Exception as e:
logger.error(f"Error getting provider setup info: {str(e)}")
raise HTTPException(status_code=500, detail="Internal server error")
def get_all_providers_info(self) -> Dict[str, Any]:
"""Get setup information for all providers."""
return {
"openai": {
"name": "OpenAI",
"description": "GPT-4 and GPT-3.5 models for content generation",
"setup_url": "https://platform.openai.com/api-keys",
"required_fields": ["api_key"],
"optional_fields": ["organization_id"]
},
"gemini": {
"name": "Google Gemini",
"description": "Google's advanced AI models for content creation",
"setup_url": "https://makersuite.google.com/app/apikey",
"required_fields": ["api_key"],
"optional_fields": []
},
"anthropic": {
"name": "Anthropic",
"description": "Claude models for sophisticated content generation",
"setup_url": "https://console.anthropic.com/",
"required_fields": ["api_key"],
"optional_fields": []
}
}
async def validate_provider_key(self, provider: str, api_key: str) -> Dict[str, Any]:
"""Validate a specific provider's API key."""
try:
# This would need to be implemented based on the actual validation logic
# For now, return a basic validation result
return {
"provider": provider,
"valid": True,
"message": f"API key for {provider} is valid"
}
except Exception as e:
logger.error(f"Error validating provider key: {str(e)}")
raise HTTPException(status_code=500, detail="Internal server error")
async def get_enhanced_validation_status(self) -> Dict[str, Any]:
"""Get enhanced validation status for all configured services."""
try:
return await check_all_api_keys(self.api_key_manager)
except Exception as e:
logger.error(f"Error getting enhanced validation status: {str(e)}")
raise HTTPException(status_code=500, detail="Internal server error")