Restore working dashboard and TradingView analysis

- Fixed layout conflicts by removing minimal layout.tsx in favor of complete layout.js
- Restored original AI Analysis page with full TradingView integration
- Connected enhanced screenshot API to real TradingView automation service
- Fixed screenshot gallery to handle both string and object formats
- Added image serving API route for screenshot display
- Resolved hydration mismatch issues with suppressHydrationWarning
- All navigation pages working (Analysis, Trading, Automation, Settings)
- TradingView automation successfully capturing screenshots from AI and DIY layouts
- Docker Compose v2 compatibility ensured

Working features:
- Homepage with hero section and status cards
- Navigation menu with Trading Bot branding
- Real TradingView screenshot capture
- AI-powered chart analysis
- Multi-layout support (AI + DIY module)
- Screenshot gallery with image serving
- API endpoints for balance, status, screenshots, trading
This commit is contained in:
mindesbunister
2025-07-14 14:21:19 +02:00
parent 9978760995
commit de45349baa
68 changed files with 2147 additions and 1813 deletions

View File

@@ -0,0 +1,65 @@
import { NextResponse } from 'next/server'
export async function POST(request) {
try {
const body = await request.json()
const { symbol, timeframe, layout } = body
console.log('📊 TradingView capture request:', { symbol, timeframe, layout })
// Mock TradingView chart capture
const chartData = {
symbol,
timeframe,
layout: layout || 'ai',
timestamp: new Date().toISOString(),
screenshot: `/screenshots/chart_${symbol}_${timeframe}_${Date.now()}.png`,
technicalIndicators: {
rsi: Math.floor(Math.random() * 100),
macd: {
value: (Math.random() - 0.5) * 10,
signal: (Math.random() - 0.5) * 8,
histogram: (Math.random() - 0.5) * 5
},
bb: {
upper: (Math.random() * 50 + 200).toFixed(2),
middle: (Math.random() * 50 + 150).toFixed(2),
lower: (Math.random() * 50 + 100).toFixed(2)
}
},
priceAction: {
currentPrice: (Math.random() * 100 + 100).toFixed(2),
change24h: ((Math.random() - 0.5) * 20).toFixed(2),
volume: Math.floor(Math.random() * 1000000000),
trend: Math.random() > 0.5 ? 'bullish' : 'bearish'
},
patterns: [
{ type: 'support', level: (Math.random() * 50 + 120).toFixed(2), strength: 'strong' },
{ type: 'resistance', level: (Math.random() * 50 + 180).toFixed(2), strength: 'medium' }
]
}
return NextResponse.json({
success: true,
data: chartData,
message: 'TradingView chart captured successfully'
})
} catch (error) {
console.error('TradingView capture error:', error)
return NextResponse.json({
success: false,
error: 'Failed to capture TradingView chart',
message: error instanceof Error ? error.message : 'Unknown error'
}, { status: 500 })
}
}
export async function GET() {
return NextResponse.json({
message: 'TradingView Chart API - Use POST to capture charts',
supportedLayouts: ['ai', 'Diy module'],
supportedTimeframes: ['1', '5', '15', '60', '240', 'D', 'W'],
requiredFields: ['symbol', 'timeframe']
})
}