'use client' import { useEffect, useState } from 'react' interface AnalysisResult { name: string description: string status: 'loading' | 'success' | 'error' data: any recommendation?: string action?: string } // Available indicator versions for filtering const INDICATOR_VERSIONS = [ { value: 'v9', label: 'v9 - Current Production' }, { value: 'v8', label: 'v8 - Previous Version' }, { value: 'v6', label: 'v6 - Legacy' }, { value: 'v5', label: 'v5 - Legacy' }, { value: 'all', label: 'All Versions (Historical)' }, ] export default function OptimizationPage() { const [analyses, setAnalyses] = useState([]) const [loading, setLoading] = useState(true) const [lastRefresh, setLastRefresh] = useState(null) const [selectedVersion, setSelectedVersion] = useState('v9') // Default to current production const loadAnalyses = async () => { setLoading(true) try { const response = await fetch(`/api/optimization/analyze?version=${encodeURIComponent(selectedVersion)}`) const data = await response.json() setAnalyses(data.analyses) setLastRefresh(new Date()) } catch (error) { console.error('Failed to load analyses:', error) } finally { setLoading(false) } } useEffect(() => { loadAnalyses() // eslint-disable-next-line react-hooks/exhaustive-deps }, [selectedVersion]) // Reload when version changes return (
{/* Header */}

🔬 Optimization Analytics Dashboard

Data-driven analysis for trading system improvements based on roadmaps and SQL queries

← Home
{lastRefresh && (

Last refresh: {lastRefresh.toLocaleTimeString()}

)}
{/* Version Selector and Refresh Button */}
{selectedVersion !== 'all' && ( ✓ Filtering by {selectedVersion.toUpperCase()} )}
{/* Loading State */} {loading && analyses.length === 0 && (

Running SQL analyses...

)} {/* Analysis Results */}
{analyses.map((analysis, index) => ( ))}
{/* Roadmap Links */}

📚 Optimization Roadmaps

) } function AnalysisCard({ analysis }: { analysis: AnalysisResult }) { const statusColors = { loading: 'border-yellow-500 bg-yellow-500/10', success: 'border-green-500 bg-green-500/10', error: 'border-red-500 bg-red-500/10' } const statusIcons = { loading: '⏳', success: '✅', error: '❌' } return (

{statusIcons[analysis.status]} {analysis.name}

{analysis.description}

{/* Data Display */} {analysis.status === 'success' && analysis.data && (
{/* Table */} {Array.isArray(analysis.data) && analysis.data.length > 0 && (
{Object.keys(analysis.data[0]).map(key => ( ))} {analysis.data.map((row: any, i: number) => ( {Object.values(row).map((value: any, j: number) => ( ))} ))}
{key}
{typeof value === 'number' ? value.toFixed(2) : String(value)}
)} {/* Summary Stats */} {typeof analysis.data === 'object' && !Array.isArray(analysis.data) && (
{Object.entries(analysis.data).map(([key, value]) => (
{key}
{typeof value === 'number' ? value.toFixed(2) : String(value)}
))}
)}
)} {/* Recommendation */} {analysis.recommendation && (
💡 Recommendation

{analysis.recommendation}

)} {/* Action */} {analysis.action && (
🎯 Action Required

{analysis.action}

)} {/* Error */} {analysis.status === 'error' && (

{analysis.data?.error || 'Analysis failed'}

)}
) } function RoadmapLink({ title, file, status, progress }: { title: string file: string status: string progress: string }) { return (

{title}

{status}

{progress}

) }