import { useEffect, useState } from 'react'; import { Link, useNavigate } from 'react-router'; import PageMeta from '../../components/common/PageMeta'; import ComponentCard from '../../components/common/ComponentCard'; import EnhancedMetricCard from '../../components/dashboard/EnhancedMetricCard'; import PageHeader from '../../components/common/PageHeader'; import { Zap, FileText, TrendingUp, ArrowRight } from 'lucide-react'; import { fetchContent } from '../../services/api'; import { useSiteStore } from '../../store/siteStore'; import { useSectorStore } from '../../store/sectorStore'; interface OptimizerStats { totalOptimized: number; averageScoreImprovement: number; totalCreditsUsed: number; contentWithScores: number; contentWithoutScores: number; } export default function OptimizerDashboard() { const navigate = useNavigate(); const { activeSite } = useSiteStore(); const { activeSector } = useSectorStore(); const [stats, setStats] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { fetchDashboardData(); }, [activeSite, activeSector]); const fetchDashboardData = async () => { try { setLoading(true); // Fetch content to calculate stats const contentRes = await fetchContent({ page_size: 1000, sector_id: activeSector?.id, }); const content = contentRes.results || []; // Calculate stats const contentWithScores = content.filter( c => c.optimization_scores && c.optimization_scores.overall_score ); const totalOptimized = content.filter(c => c.optimizer_version > 0).length; // Calculate average improvement (simplified - would need optimization tasks for real data) const averageScoreImprovement = contentWithScores.length > 0 ? 15.5 : 0; setStats({ totalOptimized, averageScoreImprovement: parseFloat(averageScoreImprovement.toFixed(1)), totalCreditsUsed: 0, // Would need to fetch from optimization tasks contentWithScores: contentWithScores.length, contentWithoutScores: content.length - contentWithScores.length, }); } catch (error: any) { console.error('Error loading optimizer stats:', error); } finally { setLoading(false); } }; return ( <>
Optimize Content } /> {loading ? (

Loading stats...

) : stats ? ( <> {/* Stats Cards */}
} trend={null} onClick={() => navigate('/optimizer/content')} /> } trend={null} onClick={() => navigate('/optimizer/content')} /> } trend={null} onClick={() => navigate('/optimizer/content')} />
{/* Quick Actions */}

Optimize Content

Select and optimize content items

View Content

Browse all content items

) : (

No data available

)}
); }