'use client' import { useState } from 'react' import { AnalysisResult } from '../lib/ai-analysis' interface AutomatedAnalysisProps { onAnalysisComplete?: (analysis: AnalysisResult) => void } export default function AutomatedAnalysisPanel({ onAnalysisComplete }: AutomatedAnalysisProps) { const [isAnalyzing, setIsAnalyzing] = useState(false) const [symbol, setSymbol] = useState('SOLUSD') const [timeframe, setTimeframe] = useState('5') const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [analysis, setAnalysis] = useState(null) const [error, setError] = useState('') const handleAnalyze = async () => { if (!email || !password) { setError('Please provide TradingView email and password') return } setIsAnalyzing(true) setError('') setAnalysis(null) try { const response = await fetch('/api/automated-analysis', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ symbol, timeframe, credentials: { email, password, }, action: 'capture_and_analyze' }) }) const result = await response.json() if (!result.success) { throw new Error(result.error || 'Analysis failed') } const analysisResult = result.data.analysis setAnalysis(analysisResult) if (onAnalysisComplete) { onAnalysisComplete(analysisResult) } } catch (err) { console.error('Analysis error:', err) setError(err instanceof Error ? err.message : 'Analysis failed') } finally { setIsAnalyzing(false) } } const handleMultipleAnalysis = async () => { if (!email || !password) { setError('Please provide TradingView email and password') return } setIsAnalyzing(true) setError('') setAnalysis(null) try { const response = await fetch('/api/automated-analysis', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ symbols: [symbol], timeframes: ['5', '15', '60'], credentials: { email, password, }, action: 'capture_multiple' }) }) const result = await response.json() if (!result.success) { throw new Error(result.error || 'Multiple analysis failed') } // Show results from all timeframes console.log('Multiple analysis results:', result.data.results) // Use the first successful analysis for display const firstSuccessful = result.data.results.find((r: any) => r.analysis !== null) if (firstSuccessful) { setAnalysis(firstSuccessful.analysis) if (onAnalysisComplete) { onAnalysisComplete(firstSuccessful.analysis) } } } catch (err) { console.error('Multiple analysis error:', err) setError(err instanceof Error ? err.message : 'Multiple analysis failed') } finally { setIsAnalyzing(false) } } return (

Automated TradingView Analysis

{/* Configuration */}
setEmail(e.target.value)} className="w-full px-3 py-2 bg-gray-800 border border-gray-600 rounded-md text-white" placeholder="your.email@example.com" disabled={isAnalyzing} />
setPassword(e.target.value)} className="w-full px-3 py-2 bg-gray-800 border border-gray-600 rounded-md text-white" placeholder="••••••••" disabled={isAnalyzing} />
{/* Action Buttons */}
{/* Status */} {isAnalyzing && (
Logging into TradingView and capturing chart...
)} {/* Error Display */} {error && (

{error}

)} {/* Analysis Results */} {analysis && (

Analysis Results

Sentiment:

{analysis.marketSentiment}

Recommendation:

{analysis.recommendation}

Confidence:

{analysis.confidence}%

Summary:

{analysis.summary}

{analysis.entry && (
Entry:

${analysis.entry.price}

{analysis.entry.rationale}

)} {analysis.stopLoss && (
Stop Loss:

${analysis.stopLoss.price}

{analysis.stopLoss.rationale}

)} {analysis.takeProfits && (
Take Profits: {analysis.takeProfits.tp1 && (

TP1: ${analysis.takeProfits.tp1.price} - {analysis.takeProfits.tp1.description}

)} {analysis.takeProfits.tp2 && (

TP2: ${analysis.takeProfits.tp2.price} - {analysis.takeProfits.tp2.description}

)}
)}
Reasoning:

{analysis.reasoning}

)}
) }