diff --git a/components/AIAnalysisPanel.tsx b/components/AIAnalysisPanel.tsx index 8dd75b5..6c61a72 100644 --- a/components/AIAnalysisPanel.tsx +++ b/components/AIAnalysisPanel.tsx @@ -488,8 +488,17 @@ export default function AIAnalysisPanel({ onAnalysisComplete }: AIAnalysisPanelP // Trade execution API call const executeTrade = async (tradeData: any) => { try { - // Use real DEX trading for manual trades - const response = await fetch('/api/trading/execute-dex', { + // Determine if this is a leveraged position or spot trade + const leverage = parseFloat(tradeData.leverage) || 1 + const isLeveraged = leverage > 1 + + // Route to appropriate API based on leverage + const apiEndpoint = isLeveraged ? '/api/trading/execute-perp' : '/api/trading/execute-dex' + const tradingMode = isLeveraged ? 'PERP' : 'SPOT' + + console.log(`šŸŽÆ Executing ${tradingMode} trade with ${leverage}x leverage via ${apiEndpoint}`) + + const response = await fetch(apiEndpoint, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ @@ -497,9 +506,11 @@ export default function AIAnalysisPanel({ onAnalysisComplete }: AIAnalysisPanelP side: 'BUY', // Could be derived from analysis amount: parseFloat(tradeData.positionSize) || parseFloat(tradeData.size), amountUSD: parseFloat(tradeData.amountUSD || tradeData.positionSize || tradeData.size), + leverage: leverage, stopLoss: parseFloat(tradeData.sl), takeProfit: parseFloat(tradeData.tp1), // Use TP1 as primary target useRealDEX: true, // Enable real trading for manual execution + tradingMode: tradingMode, tradingPair: `${tradeData.symbol || symbol}/USDC`, quickSwap: false }) @@ -508,17 +519,23 @@ export default function AIAnalysisPanel({ onAnalysisComplete }: AIAnalysisPanelP const result = await response.json() if (response.ok && result.success) { - // Show detailed success message for DEX execution - let message = `āœ… Real DEX Trade executed successfully!\n\n` + // Show detailed success message based on trading type + const leverage = parseFloat(tradeData.leverage) || 1 + const isLeveraged = leverage > 1 + const tradeType = isLeveraged ? 'Leveraged Position' : 'Spot Trade' + const platform = isLeveraged ? 'Drift Protocol' : 'Jupiter DEX' + + let message = `āœ… ${tradeType} executed successfully!\n\n` message += `šŸ“Š Transaction ID: ${result.trade?.txId || result.txId}\n` message += `šŸ’° Symbol: ${tradeData.symbol || symbol}\n` - message += `šŸ“ˆ Size: ${tradeData.positionSize || tradeData.size}\n` - message += `šŸŖ DEX: ${result.trade?.dex || 'Jupiter'}\n` + message += `šŸ“ˆ Size: ${tradeData.positionSize || tradeData.size} USDC\n` + if (isLeveraged) message += `⚔ Leverage: ${leverage}x\n` + message += `šŸŖ Platform: ${platform}\n` if (tradeData.sl) message += `šŸ›‘ Stop Loss: $${tradeData.sl}\n` if (tradeData.tp1) message += `šŸŽÆ Take Profit: $${tradeData.tp1}\n` - if (result.trade?.monitoring) { + if (result.trade?.monitoring || result.position) { message += `\nšŸ”„ Position monitoring: ACTIVE` }