'use client' import React, { useState, useEffect } from 'react' /** * AI Learning Dashboard * * Beautiful dashboard to display stop loss decision learning insights */ interface LearningInsights { success: boolean timestamp: string learningSystem: { status: string confidence: string totalDecisions: number pendingAssessments: number currentThresholds: { emergency: number risk: number mediumRisk: number } lastAnalysis: any } decisionPatterns: { successful: Array<{ decisionType: string successRate: number avgScore: number sampleSize: number }> failures: Array<{ decisionType: string successRate: number sampleSize: number }> optimalTiming: any distanceOptimization: any } performanceMetrics: { overallSuccessRate: number mostSuccessfulDecision: { type: string rate: string samples: number } improvementTrend: string confidenceLevel: number } recommendations: Array<{ type: string priority: string message: string actionable: boolean }> systemHealth: { learningActive: boolean dataQuality: string systemMaturity: string readyForAutonomy: boolean } } export default function AILearningDashboard() { const [insights, setInsights] = useState(null) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [lastUpdate, setLastUpdate] = useState(null) useEffect(() => { fetchLearningInsights() const interval = setInterval(fetchLearningInsights, 30000) // Update every 30 seconds return () => clearInterval(interval) }, []) const fetchLearningInsights = async () => { try { const response = await fetch('/api/ai/learning') const data = await response.json() if (data.success) { setInsights(data) setError(null) setLastUpdate(new Date()) } else { setError(data.error || 'Failed to load learning insights') } } catch (err: any) { setError(err.message || 'Network error') } finally { setLoading(false) } } const triggerAction = async (action: string, parameters?: any) => { try { const response = await fetch('/api/ai/learning', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action, parameters }) }) const result = await response.json() if (result.success) { fetchLearningInsights() // Refresh data } } catch (err) { console.error('Action failed:', err) } } if (loading) { return (
) } if (error) { return (

Learning System Error

{error}

) } if (!insights) return null const getStatusColor = (status: string) => { switch (status) { case 'ACTIVE': return 'text-green-400' case 'INACTIVE': return 'text-red-400' default: return 'text-yellow-400' } } const getMaturityColor = (maturity: string) => { switch (maturity) { case 'EXPERT': return 'text-purple-400' case 'INTERMEDIATE': return 'text-blue-400' case 'NOVICE': return 'text-green-400' case 'BEGINNER': return 'text-yellow-400' default: return 'text-gray-400' } } const getDataQualityColor = (quality: string) => { switch (quality) { case 'HIGH': return 'text-green-400' case 'MEDIUM': return 'text-yellow-400' case 'LOW': return 'text-orange-400' default: return 'text-red-400' } } const getTrendIcon = (trend: string) => { switch (trend) { case 'EXCELLENT': return '🚀' case 'IMPROVING': return '📈' case 'LEARNING': return '🧠' case 'INITIALIZING': return '🌱' default: return '❓' } } return (
{/* Header */}

🧠 AI Learning Dashboard

Stop Loss Decision Learning System

{insights.learningSystem.status}
Last Update: {lastUpdate?.toLocaleTimeString()}
{/* System Overview */}
System Confidence
{insights.learningSystem.confidence}
{getTrendIcon(insights.performanceMetrics.improvementTrend)} {insights.performanceMetrics.improvementTrend}
Total Decisions
{insights.learningSystem.totalDecisions}
Pending: {insights.learningSystem.pendingAssessments}
Success Rate
{insights.performanceMetrics.overallSuccessRate}%
Best: {insights.performanceMetrics.mostSuccessfulDecision.type}
System Maturity
{insights.systemHealth.systemMaturity}
Quality: {insights.systemHealth.dataQuality}
{/* Learning Thresholds */}

🎯 Current Learning Thresholds

🚨 Emergency
{insights.learningSystem.currentThresholds.emergency}%
Immediate action required
⚠️ High Risk
{insights.learningSystem.currentThresholds.risk}%
Enhanced monitoring
🟡 Medium Risk
{insights.learningSystem.currentThresholds.mediumRisk}%
Standard monitoring
{/* Decision Patterns */}
{/* Successful Patterns */}

Successful Decision Patterns

{insights.decisionPatterns.successful.length > 0 ? ( insights.decisionPatterns.successful.map((pattern, index) => (
{pattern.decisionType}
{pattern.successRate.toFixed(1)}%
Sample Size: {pattern.sampleSize} | Avg Score: {pattern.avgScore.toFixed(2)}
)) ) : (
No successful patterns identified yet
Keep making decisions to build learning data
)}
{/* Failure Patterns */}

Areas for Improvement

{insights.decisionPatterns.failures.length > 0 ? ( insights.decisionPatterns.failures.map((pattern, index) => (
{pattern.decisionType}
{pattern.successRate.toFixed(1)}%
Sample Size: {pattern.sampleSize} | Needs improvement
)) ) : (
No failure patterns identified
Great! System is performing well
)}
{/* Recommendations */} {insights.recommendations.length > 0 && (

💡 AI Recommendations

{insights.recommendations.map((rec, index) => (
{rec.type} - {rec.priority} PRIORITY
{rec.actionable && ( Actionable )}
{rec.message}
))}
)} {/* System Health */}

🏥 System Health

{insights.systemHealth.learningActive ? '🟢' : '🔴'}
Learning Active
📊
Data Quality
{insights.systemHealth.dataQuality}
🎓
Maturity
{insights.systemHealth.systemMaturity}
{insights.systemHealth.readyForAutonomy ? '🚀' : '⚠️'}
Beach Ready
{insights.systemHealth.readyForAutonomy ? 'YES' : 'LEARNING'}
{/* Action Buttons */}

Learning System Actions

) }