import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { TeamReviewData } from "@/lib/team-review-types"; import { Progress } from "@/components/ui/progress"; import { Badge } from "@/components/ui/badge"; import { AlertTriangle } from "lucide-react"; interface TeamOverviewProps { team: TeamReviewData["team"]; stats: TeamReviewData["stats"]; members: TeamReviewData["members"]; categoryCoverage: TeamReviewData["categoryCoverage"]; } export function TeamOverview({ team, stats, members, categoryCoverage, }: TeamOverviewProps) { // Trouver les top contributeurs const topContributors = [...members] .sort((a, b) => b.expertSkills - a.expertSkills) .slice(0, 3); // Trouver les catégories les plus fortes const strongestCategories = [...categoryCoverage] .sort((a, b) => b.coverage - a.coverage) .slice(0, 2); // Trouver les catégories qui nécessitent de l'attention const categoriesNeedingAttention = [...categoryCoverage] .filter((cat) => { // Une catégorie nécessite de l'attention si : // - Couverture faible (< 40%) // - OU pas assez d'experts (< 2) avec une équipe de taille significative (> 5) // - OU beaucoup d'apprenants (> 30% de l'équipe) avec peu de mentors (< 2) return ( cat.coverage < 40 || (cat.experts < 2 && stats.totalMembers > 5) || (cat.learners > stats.totalMembers * 0.3 && cat.mentors < 2) ); }) .sort((a, b) => { // Prioriser les catégories avec le plus de besoins const aScore = a.learners * 2 - a.mentors - a.experts; const bScore = b.learners * 2 - b.mentors - b.experts; return bScore - aScore; }) .slice(0, 2); return ( Vue d'ensemble
{/* Points forts */}

Points forts

{strongestCategories.map((cat) => (

{cat.category}

{cat.coverage.toFixed(0)}%

{cat.experts} experts • {cat.mentors} mentors

))}
{/* Top contributeurs */}

Top contributeurs

{topContributors.map((member) => (

{member.member.firstName} {member.member.lastName}

{member.expertSkills} expertises {member.mentorSkills > 0 && ( {member.mentorSkills} mentorats )}
))}
{/* Points d'attention */}

Besoins prioritaires

{categoriesNeedingAttention.map((cat) => (

{cat.category}

{cat.learners} apprenants
{cat.experts} experts {cat.mentors} mentors
{cat.coverage < 40 && "Couverture insuffisante • "} {cat.experts < 2 && stats.totalMembers > 5 && "Manque d'experts • "} {cat.learners > stats.totalMembers * 0.3 && cat.mentors < 2 && "Besoin de mentors"}
))} {stats.learningNeeds > 0 && (

{stats.learningNeeds} compétences sans expert ni mentor

)}
); }