'use client'; import { useState } from 'react'; import { useWeeklyMetrics, useVelocityTrends } from '@/hooks/use-metrics'; import { Card, CardHeader, CardContent } from '@/components/ui/Card'; import { Button } from '@/components/ui/Button'; import { DailyStatusChart } from './charts/DailyStatusChart'; import { CompletionRateChart } from './charts/CompletionRateChart'; import { StatusDistributionChart } from './charts/StatusDistributionChart'; import { PriorityBreakdownChart } from './charts/PriorityBreakdownChart'; import { VelocityTrendChart } from './charts/VelocityTrendChart'; import { WeeklyActivityHeatmap } from './charts/WeeklyActivityHeatmap'; import { ProductivityInsights } from './charts/ProductivityInsights'; import { format } from 'date-fns'; import { fr } from 'date-fns/locale'; interface MetricsTabProps { className?: string; } export function MetricsTab({ className }: MetricsTabProps) { const [selectedDate] = useState(new Date()); const [weeksBack, setWeeksBack] = useState(4); const { metrics, loading: metricsLoading, error: metricsError, refetch: refetchMetrics } = useWeeklyMetrics(selectedDate); const { trends, loading: trendsLoading, error: trendsError, refetch: refetchTrends } = useVelocityTrends(weeksBack); const handleRefresh = () => { refetchMetrics(); refetchTrends(); }; const formatPeriod = () => { if (!metrics) return ''; return `Semaine du ${format(metrics.period.start, 'dd MMM', { locale: fr })} au ${format(metrics.period.end, 'dd MMM yyyy', { locale: fr })}`; }; const getTrendIcon = (trend: string) => { switch (trend) { case 'improving': return '📈'; case 'declining': return '📉'; case 'stable': return '➡️'; default: return '📊'; } }; const getPatternIcon = (pattern: string) => { switch (pattern) { case 'consistent': return '🎯'; case 'variable': return '📊'; case 'weekend-heavy': return '📅'; default: return '📋'; } }; if (metricsError || trendsError) { return (

❌ Erreur lors du chargement des métriques

{metricsError || trendsError}

); } return (
{/* Header avec période et contrôles */}

📊 Métriques & Analytics

{formatPeriod()}

{metricsLoading || trendsLoading ? (

Chargement des métriques...

) : metrics ? (
{/* Vue d'ensemble rapide */}

🎯 Vue d'ensemble

{metrics.summary.totalTasksCompleted}
Terminées
{metrics.summary.totalTasksCreated}
Créées
{metrics.summary.averageCompletionRate.toFixed(1)}%
Taux moyen
{getTrendIcon(metrics.summary.trendsAnalysis.completionTrend)}
{metrics.summary.trendsAnalysis.completionTrend}
{getPatternIcon(metrics.summary.trendsAnalysis.productivityPattern)}
{metrics.summary.trendsAnalysis.productivityPattern === 'consistent' ? 'Régulier' : metrics.summary.trendsAnalysis.productivityPattern === 'variable' ? 'Variable' : 'Weekend+'}
{/* Graphiques principaux */}

📈 Évolution quotidienne des statuts

🎯 Taux de completion quotidien

{/* Distribution et priorités */}

🍰 Répartition des statuts

⚡ Performance par priorité

🔥 Heatmap d'activité

{/* Tendances de vélocité */} {trends.length > 0 && (

🚀 Tendances de vélocité

)} {/* Analyses de productivité */}

💡 Analyses de productivité

) : null}
); }