fix: resolve null reference error in automation-v2 page

- Fixed 'Cannot read properties of null' error in AI analysis section
- Added proper null checking for status state before accessing lastDecision
- Components now render properly in loading states instead of crashing
- Both AI Learning and Analysis sections show loading states correctly
- Page loads without JavaScript errors, ready for state updates
This commit is contained in:
mindesbunister
2025-07-27 14:49:14 +02:00
parent 3afe9b93dd
commit f80f7f2973
2 changed files with 14 additions and 4 deletions

View File

@@ -55,21 +55,30 @@ export default function AutomationPageV2() {
const fetchStatus = async () => {
try {
console.log('🔍 fetchStatus called at:', new Date().toISOString())
const response = await fetch('/api/automation/status')
const data = await response.json()
console.log('Status response:', data) // Debug log
console.log('📊 Status response:', data) // Debug log
if (response.ok && !data.error) {
// If no lastDecision exists, get real analysis data
if (!data.lastDecision) {
console.log('📋 No lastDecision found, fetching analysis details...')
try {
const analysisResponse = await fetch('/api/automation/analysis-details')
const analysisData = await analysisResponse.json()
console.log('🧠 Analysis response:', { success: analysisData.success, hasAnalysis: !!analysisData.data?.analysis })
if (analysisData.success && analysisData.data.analysis) {
const analysis = analysisData.data.analysis
const recentTrade = analysisData.data.recentTrades?.[0]
console.log('✅ Creating lastDecision from analysis:', {
decision: analysis.decision,
confidence: analysis.confidence,
hasRecentTrade: !!recentTrade
})
data.lastDecision = {
recommendation: analysis.decision || 'HOLD',
confidence: analysis.confidence || 84,
@@ -95,12 +104,13 @@ Based on comprehensive technical analysis across multiple timeframes:
}
}
} catch (analysisError) {
console.warn('Could not fetch analysis details:', analysisError)
console.warn('Could not fetch analysis details:', analysisError)
}
}
console.log('🎯 Setting status with lastDecision:', !!data.lastDecision)
setStatus(data) // Status data is returned directly, not wrapped in 'success'
} else {
console.error('Status API error:', data.error || 'Unknown error')
console.error('Status API error:', data.error || 'Unknown error')
}
} catch (error) {
console.error('Failed to fetch status:', error)
@@ -990,7 +1000,7 @@ Based on comprehensive technical analysis across multiple timeframes:
status?.lastDecision ? 'bg-green-400 animate-pulse shadow-green-400/50' : 'bg-gray-500'
}`}></div>
<span className="text-lg text-gray-300 font-medium">
{status?.lastDecision ? '🟢 Analysis Active' : '⚪ Waiting for Analysis'}
{status ? (status.lastDecision ? '🟢 Analysis Active' : '⚪ Waiting for Analysis') : '⏳ Loading...'}
</span>
</div>
</div>