'use client'; import { useState } from 'react'; import { ManagerSummary } from '@/services/analytics/manager-summary'; import { Card, CardHeader, CardContent } from '@/components/ui/Card'; import { Button } from '@/components/ui/Button'; import { MetricCard } from '@/components/ui/MetricCard'; import { Tabs, TabItem } from '@/components/ui/Tabs'; import { AchievementCard } from '@/components/ui/AchievementCard'; import { ChallengeCard } from '@/components/ui/ChallengeCard'; import { useTasksContext } from '@/contexts/TasksContext'; import { MetricsTab } from './MetricsTab'; import { format } from 'date-fns'; import { fr } from 'date-fns/locale'; import { Tag } from '@/lib/types'; interface ManagerWeeklySummaryProps { initialSummary: ManagerSummary; } export default function ManagerWeeklySummary({ initialSummary }: ManagerWeeklySummaryProps) { const [summary] = useState(initialSummary); const [activeView, setActiveView] = useState<'narrative' | 'accomplishments' | 'challenges' | 'metrics'>('narrative'); const { tags: availableTags } = useTasksContext(); const handleTabChange = (tabId: string) => { setActiveView(tabId as 'narrative' | 'accomplishments' | 'challenges' | 'metrics'); }; const handleRefresh = () => { // SSR - refresh via page reload window.location.reload(); }; const formatPeriod = () => { return `7 derniers jours (${format(summary.period.start, 'dd MMM', { locale: fr })} - ${format(summary.period.end, 'dd MMM yyyy', { locale: fr })})`; }; // Configuration des onglets const tabItems: TabItem[] = [ { id: 'narrative', label: 'Vue Executive', icon: '📝' }, { id: 'accomplishments', label: 'Accomplissements', icon: '✅', count: summary.keyAccomplishments.length }, { id: 'challenges', label: 'Enjeux à venir', icon: '🎯', count: summary.upcomingChallenges.length }, { id: 'metrics', label: 'Métriques', icon: '📊' } ]; return (
{/* Header avec navigation */}

👔 Résumé Manager

{formatPeriod()}

{/* Navigation des vues */} {/* Vue Executive / Narrative */} {activeView === 'narrative' && (
{/* Résumé narratif */}

📊 Résumé de la semaine

🎯 Points clés accomplis

{summary.narrative.weekHighlight}

⚡ Défis traités

{summary.narrative.mainChallenges}

🔮 Focus 7 prochains jours

{summary.narrative.nextWeekFocus}

{/* Métriques rapides */}

📈 Métriques en bref

a.impact === 'high').length} subtitle={`/ ${summary.keyAccomplishments.length} accomplissements`} color="warning" /> c.priority === 'high').length} subtitle={`/ ${summary.upcomingChallenges.length} enjeux`} color="destructive" />
{/* Top accomplissements */}

🏆 Top accomplissements

{summary.keyAccomplishments.length === 0 ? (

Aucun accomplissement significatif trouvé cette semaine.

Ajoutez des tâches avec priorité haute/medium ou des meetings.

) : ( summary.keyAccomplishments.slice(0, 6).map((accomplishment, index) => ( )) )}
{/* Top challenges */}

🎯 Top enjeux à venir

{summary.upcomingChallenges.length === 0 ? (

Aucun enjeu prioritaire trouvé.

Ajoutez des tâches non complétées avec priorité haute/medium.

) : ( summary.upcomingChallenges.slice(0, 6).map((challenge, index) => ( )) )}
)} {/* Vue détaillée des accomplissements */} {activeView === 'accomplishments' && (

✅ Accomplissements des 7 derniers jours

{summary.keyAccomplishments.length} accomplissements significatifs • {summary.metrics.totalTasksCompleted} tâches • {summary.metrics.totalCheckboxesCompleted} todos complétés

{summary.keyAccomplishments.map((accomplishment, index) => ( ))}
)} {/* Vue détaillée des challenges */} {activeView === 'challenges' && (

🎯 Enjeux et défis à venir

{summary.upcomingChallenges.length} défis identifiés • {summary.upcomingChallenges.filter(c => c.priority === 'high').length} priorité haute • {summary.upcomingChallenges.filter(c => c.blockers.length > 0).length} avec blockers

{summary.upcomingChallenges.map((challenge, index) => ( ))}
)} {/* Vue Métriques */} {activeView === 'metrics' && ( )}
); }