Spaces:
Running
Running
from fastapi import APIRouter, Depends, HTTPException | |
from app.services.ai_swarm import AISwarmService | |
from app.models.ai_models import ( | |
AIAnalysisRequest, AIAnalysisResponse, | |
AnalysisFocus, MarketView, InvestmentHorizon | |
) | |
router = APIRouter() | |
async def get_ai_recommendations(request: AIAnalysisRequest): | |
""" | |
Get AI-powered investment recommendations based on client profile, portfolio, and goals | |
""" | |
try: | |
ai_service = AISwarmService() | |
result = ai_service.get_enhanced_analysis(request) | |
return result | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=f"Error generating AI recommendations: {str(e)}") | |
async def get_fund_selection_recommendations( | |
client_profile: dict, | |
goals_data: dict, | |
market_conditions: MarketView = MarketView.NEUTRAL, | |
investment_horizon: InvestmentHorizon = InvestmentHorizon.MEDIUM_TERM | |
): | |
""" | |
Get AI-powered fund selection recommendations | |
""" | |
try: | |
ai_service = AISwarmService() | |
request = AIAnalysisRequest( | |
client_profile=client_profile, | |
portfolio_data={}, | |
goals_data=goals_data, | |
analysis_focus=[AnalysisFocus.FUND_SELECTION], | |
market_conditions=market_conditions, | |
investment_horizon=investment_horizon | |
) | |
result = ai_service.get_enhanced_analysis(request) | |
return result | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=f"Error generating fund selection recommendations: {str(e)}") | |
async def get_risk_assessment( | |
client_profile: dict, | |
portfolio_data: dict, | |
market_conditions: MarketView = MarketView.NEUTRAL | |
): | |
""" | |
Get AI-powered risk assessment for a portfolio | |
""" | |
try: | |
ai_service = AISwarmService() | |
request = AIAnalysisRequest( | |
client_profile=client_profile, | |
portfolio_data=portfolio_data, | |
goals_data={}, | |
analysis_focus=[AnalysisFocus.RISK_ASSESSMENT], | |
market_conditions=market_conditions, | |
investment_horizon=InvestmentHorizon.MEDIUM_TERM | |
) | |
result = ai_service.get_enhanced_analysis(request) | |
return result | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=f"Error generating risk assessment: {str(e)}") | |
async def get_goal_planning_recommendations( | |
client_profile: dict, | |
goals_data: dict, | |
investment_horizon: InvestmentHorizon = InvestmentHorizon.MEDIUM_TERM | |
): | |
""" | |
Get AI-powered goal planning recommendations | |
""" | |
try: | |
ai_service = AISwarmService() | |
request = AIAnalysisRequest( | |
client_profile=client_profile, | |
portfolio_data={}, | |
goals_data=goals_data, | |
analysis_focus=[AnalysisFocus.GOAL_ALIGNMENT], | |
market_conditions=MarketView.NEUTRAL, | |
investment_horizon=investment_horizon | |
) | |
result = ai_service.get_enhanced_analysis(request) | |
return result | |
except Exception as e: | |
raise HTTPException(status_code=500, detail=f"Error generating goal planning recommendations: {str(e)}") |