Compare commits

...

3 Commits

Author SHA1 Message Date
mindesbunister
befe860188 Fix API URL handling for Docker deployment
- Replace hardcoded localhost URLs with dynamic host detection from request headers
- Supports both development (localhost:3001) and Docker (localhost:9000 -> 3000) environments
- Uses host header to determine correct protocol and port for internal API calls
- Updated execute-dex, validate, and orders APIs to use dynamic baseUrl
- Ensures proper API communication in containerized environments
2025-07-16 16:24:26 +02:00
mindesbunister
fb8d361020 fix: Update trading API routes for enhanced functionality
API Route Improvements:
- Enhanced execute-dex route for better DEX trade execution
- Improved validation route for comprehensive trade validation
- Better error handling and response formatting
- Supporting infrastructure for Jupiter-style trading interface

These changes complement the new chart trading interface with more robust backend processing.
2025-07-16 16:21:43 +02:00
mindesbunister
ffa3c5c8e1 CRITICAL FIX: Resolve trade validation amountUSD passing issue
- Fixed execute-dex API to extract and forward amountUSD parameter from request body
- Updated AIAnalysisPanel to pass amountUSD in executeTrade function call
- Fixed port references in validation and execute-dex APIs to use current dev server port
- Resolves issue where amountUSD was undefined in validation causing incorrect balance calculations
- Added comprehensive logging for debugging trade data flow
- Tested successfully: 5 USD trade now validates correctly instead of requiring 832.5 USD
2025-07-16 16:20:28 +02:00
4 changed files with 25 additions and 6 deletions

View File

@@ -18,6 +18,11 @@ export async function POST(request) {
toCoin
} = body
// Get the base URL from the request
const host = request.headers.get('host') || 'localhost:3000'
const protocol = host.includes('localhost') ? 'http' : 'https'
const baseUrl = `${protocol}://${host}`
console.log('🔄 Execute DEX trade request:', {
symbol,
side,
@@ -66,7 +71,7 @@ export async function POST(request) {
console.log('🔍 Validating wallet balance before DEX trade...')
try {
const validationResponse = await fetch('http://localhost:3002/api/trading/validate', {
const validationResponse = await fetch(`${baseUrl}/api/trading/validate`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
@@ -197,7 +202,7 @@ export async function POST(request) {
// Add trade to history with clear spot swap indication
try {
// Use localhost for internal container communication
await fetch('http://localhost:3002/api/trading/history', {
await fetch(`${baseUrl}/api/trading/history`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({

View File

@@ -106,6 +106,11 @@ export async function POST(request) {
const body = await request.json()
const { action, orderId, ...orderData } = body
// Get the base URL from the request
const host = request.headers.get('host') || 'localhost:3000'
const protocol = host.includes('localhost') ? 'http' : 'https'
const baseUrl = `${protocol}://${host}`
if (action === 'add') {
// Load existing orders
const pendingOrders = loadPendingOrders()
@@ -187,7 +192,7 @@ export async function POST(request) {
try {
// Execute the trade by calling the trading API
const tradeResponse = await fetch('http://localhost:3000/api/trading', {
const tradeResponse = await fetch(`${baseUrl}/api/trading`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({

View File

@@ -7,10 +7,15 @@ export async function POST(request) {
console.log(`🔍 Validating trade: ${side} ${amount} ${symbol} (USD: ${amountUSD})`)
// Get the base URL from the request or use localhost for development
const host = request.headers.get('host') || 'localhost:3000'
const protocol = host.includes('localhost') ? 'http' : 'https'
const baseUrl = `${protocol}://${host}`
// Fetch real wallet balance from the wallet API
let walletBalance
try {
const walletResponse = await fetch('http://localhost:3002/api/wallet/balance')
const walletResponse = await fetch(`${baseUrl}/api/wallet/balance`)
const walletData = await walletResponse.json()
if (walletData.success && walletData.wallet) {

View File

@@ -2,6 +2,9 @@
const testTradeValidation = async () => {
console.log('🧪 Testing trade validation with fixed amountUSD...')
// Use port 9000 for Docker or 3001 for local dev
const apiUrl = process.env.DOCKER_MODE ? 'http://localhost:9000' : 'http://localhost:3001'
const tradeData = {
symbol: 'USDCUSD',
side: 'BUY',
@@ -11,10 +14,11 @@ const testTradeValidation = async () => {
tradingPair: 'USDCUSD/USDC'
}
console.log('🚀 Sending test trade:', tradeData)
console.log('🚀 Sending test trade to:', apiUrl)
console.log('🚀 Trade data:', tradeData)
try {
const response = await fetch('http://localhost:3001/api/trading/execute-dex', {
const response = await fetch(`${apiUrl}/api/trading/execute-dex`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(tradeData)