Files
peakskills/lib/team-review-types.ts
Julien Froidefond c7a5b25501 feat: my team page
2025-08-27 10:53:11 +02:00

88 lines
1.8 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;
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;
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;
}
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;
};
}
export interface MentorOpportunity {
mentor: TeamMember;
mentee: TeamMember;
skill: string;
category: string;
mentorLevel: "autonomous" | "expert";
menteeLevel: "never" | "not-autonomous";
}
export interface LearningPath {
member: TeamMember;
currentSkills: TeamMemberSkill[];
targetSkills: TeamMemberSkill[];
recommendedMentors: TeamMember[];
estimatedTimeToAutonomy: number; // en mois
}