"use client"; import { Star, BarChart3, Target } from "lucide-react"; import { TeamStats } from "@/services/admin-service"; import { TechIcon } from "@/components/icons/tech-icon"; interface SkillAnalysis { skillName: string; category: string; experts: Array<{ name: string; level: number; canMentor: boolean; }>; learners: Array<{ name: string; currentLevel: number; }>; averageLevel: number; totalEvaluations: number; expertCount: number; learnerCount: number; proficiencyRate: number; } interface TeamInsights { averageTeamLevel: number; totalExperts: number; totalLearners: number; skillGaps: number; strongSkills: number; } interface TeamOverviewTabProps { team: TeamStats; teamInsights: TeamInsights; skillAnalysis: SkillAnalysis[]; } function getSkillLevelColor(level: number): string { if (level < 0.5) return "bg-red-500"; if (level < 1.5) return "bg-orange-500"; if (level < 2.5) return "bg-blue-500"; return "bg-green-500"; } export function TeamOverviewTab({ team, teamInsights, skillAnalysis, }: TeamOverviewTabProps) { return ( <> {/* Top Skills avec design amélioré */}

Top Compétences de l'équipe

{team.topSkills.slice(0, 6).map((skill, idx) => (
{skill.icon && (
)} {skill.skillName}
{skill.averageLevel.toFixed(1)} {skill.averageLevel < 0.5 ? "Débutant" : skill.averageLevel < 1.5 ? "Intermé." : skill.averageLevel < 2.5 ? "Avancé" : "Expert"}
))}
{/* Distribution des niveaux */}

Répartition des niveaux

{[ { label: "Expert", count: team.members.filter( (m) => m.skills.reduce((avg, s) => avg + s.level, 0) / m.skills.length >= 2.5 ).length, color: "bg-green-500", }, { label: "Avancé", count: team.members.filter((m) => { const avg = m.skills.reduce((avg, s) => avg + s.level, 0) / m.skills.length; return avg >= 2 && avg < 2.5; }).length, color: "bg-blue-500", }, { label: "Intermédiaire", count: team.members.filter((m) => { const avg = m.skills.reduce((avg, s) => avg + s.level, 0) / m.skills.length; return avg >= 1 && avg < 2; }).length, color: "bg-orange-500", }, { label: "Débutant", count: team.members.filter( (m) => m.skills.reduce((avg, s) => avg + s.level, 0) / m.skills.length < 1 ).length, color: "bg-red-500", }, ].map((level, idx) => (
{level.label}
{level.count}
{((level.count / team.totalMembers) * 100).toFixed(0)}%
))}

Métriques clés

Couverture des compétences {team.skillCoverage.toFixed(1)}%
Compétences fortes {teamInsights.strongSkills}
Objectifs d'apprentissage {teamInsights.totalLearners}
Mentors disponibles {skillAnalysis.reduce( (sum, skill) => sum + skill.experts.filter((e) => e.canMentor).length, 0 )}
); }