Files
peakskills/lib/team-review-types.ts
2025-08-27 12:56:48 +02:00

99 lines
2.1 KiB
TypeScript

export interface TeamMember {
uuid: string;
firstName: string;
lastName: string;
teamId: string;
email?: string;
role?: string;
joinDate?: string;
}
export interface TeamMemberSkill {
skillId: string;
skillName: string;
category: string;
importance: "incontournable" | "majeure" | "standard";
level: "never" | "not-autonomous" | "autonomous" | "expert";
canMentor: boolean;
wantsToLearn: boolean;
}
export interface TeamMemberProfile {
member: TeamMember;
skills: TeamMemberSkill[];
totalSkills: number;
expertSkills: number;
mentorSkills: number;
learningSkills: number;
averageLevel: number;
}
export interface SkillGap {
skillId: string;
skillName: string;
category: string;
icon?: string;
importance: "incontournable" | "majeure" | "standard";
teamMembers: number;
experts: number;
mentors: number;
learners: number;
coverage: number; // Pourcentage de couverture
risk: "low" | "medium" | "high";
}
export interface CategoryCoverage {
category: string;
totalSkills: number;
coveredSkills: number;
coverage: number;
experts: number;
mentors: number;
learners: number;
criticalSkillsCoverage: {
incontournable: number;
majeure: number;
};
}
export interface TeamReviewData {
team: {
id: string;
name: string;
direction: string;
};
members: TeamMemberProfile[];
skillGaps: SkillGap[];
categoryCoverage: CategoryCoverage[];
recommendations: string[];
stats: {
totalMembers: number;
totalSkills: number;
averageTeamLevel: number;
mentorshipOpportunities: number;
learningNeeds: number;
criticalSkillsCoverage: {
incontournable: number;
majeure: number;
};
};
}
export interface MentorOpportunity {
mentor: TeamMember;
mentee: TeamMember;
skill: string;
category: string;
importance: "incontournable" | "majeure" | "standard";
mentorLevel: "autonomous" | "expert";
menteeLevel: "never" | "not-autonomous";
}
export interface LearningPath {
member: TeamMember;
currentSkills: TeamMemberSkill[];
targetSkills: TeamMemberSkill[];
recommendedMentors: TeamMember[];
estimatedTimeToAutonomy: number; // en mois
}