""" TableGeneratorAgent - Generates structured evaluation table. """ import json import logging from agents.base_agent import BaseAgent from models.schemas import ( ExperienceAnalysisOutput, SkillsEducationOutput, SummaryValidationOutput, TableGeneratorOutput, ) from prompts.templates import TABLE_GENERATOR_PROMPT logger = logging.getLogger(__name__) class TableGeneratorAgent(BaseAgent): def __init__(self, **kwargs): super().__init__( name="TableGeneratorAgent", role=( "Générer un tableau d'évaluation structuré avec emojis et justifications " "pour chaque section du CV." ), **kwargs, ) def run( self, experience_analysis: ExperienceAnalysisOutput, skills_education: SkillsEducationOutput, summary_validation: SummaryValidationOutput, ) -> TableGeneratorOutput: """ Generate structured evaluation table. Args: experience_analysis: Results from ExperienceAnalysisAgent. skills_education: Results from SkillsEducationAgent. summary_validation: Results from SummaryValidationAgent. Returns: TableGeneratorOutput: Structured evaluation table. """ logger.info(f"[{self.name}] Generating evaluation table...") def truncated_json(obj, max_len=4000): s = json.dumps(obj.model_dump(), ensure_ascii=False, indent=2) return s[:max_len] if len(s) > max_len else s prompt = TABLE_GENERATOR_PROMPT.format( experience_analysis=truncated_json(experience_analysis), skills_education=truncated_json(skills_education), summary_validation=truncated_json(summary_validation), ) result = self._call_llm_with_retry(prompt, TableGeneratorOutput) logger.info(f"[{self.name}] Table generated with {len(result.lignes)} rows.") return result