Spaces:
Sleeping
Sleeping
| from typing import List, Optional, Dict, Any | |
| from pydantic import BaseModel, Field | |
| # --- Ice Breaker Agent --- | |
| class IceBreakerOutput(BaseModel): | |
| profil_type: str = Field(..., description="Type de profil (reconversion, étudiant, junior, expérimenté)") | |
| annees_experience_domaine: str = Field(..., description="Années d'expérience dans le domaine cible (0-2, 2-5, 5+)") | |
| coherence_parcours: str = Field(..., description="Cohérence parcours -> poste visé (forte, moyenne, faible)") | |
| motivation_detectee: bool = Field(..., description="Motivation exprimée") | |
| contexte_specifique: str = Field(..., description="Contexte spécifique du candidat") | |
| points_a_explorer: List[str] = Field(default_factory=list, description="Points à explorer dans la suite") | |
| # --- Technical Agent --- | |
| class TechnicalSkillGap(BaseModel): | |
| skill: str | |
| niveau_detecte: int = Field(..., description="Niveau détecté (0-4)") | |
| indicateurs: Dict[str, bool] = Field(..., description="Indicateurs binaires (concept_sous_jacent, experience_liee, outil_adjacent, cas_usage, strategie_montee)") | |
| transferabilite: str = Field(..., description="Transférabilité (faible, moyenne, forte)") | |
| questions_posees: List[str] = Field(default_factory=list) | |
| class ProjectTechUnderstanding(BaseModel): | |
| skill: str | |
| source_projet: str | |
| score: int = Field(..., description="Score (1-5)") | |
| indicateurs: Dict[str, bool] = Field(..., description="Indicateurs binaires (justifie_choix, fonctionnement_interne, identifie_limites, propose_alternatives, quantifie_resultats, resolution_probleme)") | |
| questions_posees: List[str] = Field(default_factory=list) | |
| class ValidatedSkill(BaseModel): | |
| skill: str | |
| score: int | |
| source: str | |
| class TechnicalOutput(BaseModel): | |
| competences_validees: List[ValidatedSkill] = Field(default_factory=list) | |
| lacunes_explorees: List[TechnicalSkillGap] = Field(default_factory=list) | |
| comprehension_technos_projets: List[ProjectTechUnderstanding] = Field(default_factory=list) | |
| score_technique_global: float = Field(..., description="Score technique global calculé") | |
| points_a_explorer_comportemental: List[str] = Field(default_factory=list) | |
| # --- Behavioral Agent --- | |
| class BehavioralCompetency(BaseModel): | |
| competence: str | |
| score: int = Field(..., description="Score (1-5)") | |
| indicateurs: Dict[str, bool] = Field(..., description="Indicateurs binaires spécifiques à la compétence") | |
| questions_posees: List[str] = Field(default_factory=list) | |
| class SJTResult(BaseModel): | |
| scenario_id: str | |
| choix: str | |
| score_choix: float | |
| justification_score: float | |
| score_sjt: float | |
| class BehavioralOutput(BaseModel): | |
| competences_evaluees: List[BehavioralCompetency] = Field(default_factory=list) | |
| sjt_results: List[SJTResult] = Field(default_factory=list) | |
| score_comportemental_global: float = Field(..., description="Score comportemental global calculé") | |
| signaux_forts: List[str] = Field(default_factory=list) | |
| signaux_faibles: List[str] = Field(default_factory=list) | |
| points_a_integrer_mise_en_situation: List[str] = Field(default_factory=list) | |
| # --- Situation Agent --- | |
| class SituationOutput(BaseModel): | |
| scenario_utilise: str | |
| score_mise_en_situation: int = Field(..., description="Score sur 5") | |
| indicateurs: Dict[str, bool] = Field(..., description="Indicateurs (comprehension_probleme, demarche_structuree, pertinence_technique, gestion_contraintes, communication_solution, identification_risques, proposition_alternatives)") | |
| questions_posees: List[str] = Field(default_factory=list) | |
| observations: str | |
| # --- Full Report --- | |
| class SimulationReport(BaseModel): | |
| icebreaker: Optional[IceBreakerOutput] = None | |
| technical: Optional[TechnicalOutput] = None | |
| behavioral: Optional[BehavioralOutput] = None | |
| situation: Optional[SituationOutput] = None | |
| score_global: float = Field(..., description="Score global de l'entretien sur 5") | |
| synthese_candidat: str = Field(..., description="Synthèse textuelle du profil") | |
| points_forts: List[str] = Field(default_factory=list, description="Top 3 points forts") | |
| points_faibles: List[str] = Field(default_factory=list, description="Top 3 points faibles") | |
| recommandation: str = Field(..., description="GO / NO GO / A CREUSER") | |
| feedback_candidat: str = Field(..., description="Feedback constructif adressé au candidat") | |