
    :*hn                     T    d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
  G d d      Zy)    )DictListAnyOptional)RoleplayScenario)GroqService)JSONHandlerc                       e Zd Zd Zdededeeef   dededee   dee	   fd	Z
d
edee	   fdZdeeeef      fdZdedee   fdZy)ScenarioGeneratorc                 @    t               | _        t               | _        y N)r   groq_servicer	   json_handlerselfs    RC:\Users\pusha\Downloads\roleplay_prototype_edurigo\services\scenario_generator.py__init__zScenarioGenerator.__init__   s    'M'M    category	objectivedetailsai_rolelearner_roleskills_to_assessreturnc                   
 t        |      dkD  r|dd }||||||d}| j                  j                  |      

syg d}t        
fd|D              st	        d|        yt        j                  ||||||
d   
d   
d	   
d
   
d         }	| j                  j                  |	j                               r|	S t	        d       y)zCreate a new roleplay scenario   N)r   r   r   r   r   r   )scenario_setupai_characterscenario_introconversation_startersuccess_criteriac              3   &   K   | ]  }|v  
 y wr    ).0keyscenario_datas     r   	<genexpr>z4ScenarioGenerator.create_scenario.<locals>.<genexpr>%   s     AC3-'As   z*Generated scenario missing required keys: r   r   r    r!   r"   )r   r   r   r   r   r   r   r   r    r!   r"   zFailed to save scenario)
lenr   generate_scenarioallprintr   
create_newr   save_scenarioto_dict)r   r   r   r   r   r   r   admin_inputrequired_keysscenarior'   s             @r   create_scenarioz!ScenarioGenerator.create_scenario   s   
  1$/3 !"( 0
 ));;KH yA=AA>}oNO $..%-()9:&~6()9:!./E!F*+=>
 **8+;+;+=>O+,r   scenario_idc                 h    | j                   j                  |      }|rt        j                  |      S y)zLoad an existing scenarioN)r   load_scenarior   	from_dict)r   r4   r'   s      r   r6   zScenarioGenerator.load_scenario?   s/    ))77D#--m<<r   c                 6    | j                   j                         S )zList all available scenarios)r   list_scenariosr   s    r   list_available_scenariosz*ScenarioGenerator.list_available_scenariosF   s      //11r   c                 N    g dg dg dg dg dd}|j                  |g d      S )z'Get default skills for a given category)zPolicy AdherenceEmpathyzCommunication ClarityzConflict ResolutionProblem Solving)zNeeds AssessmentzProduct Knowledge
PersuasionzObjection HandlingzRelationship Building)zDecision MakingzTeam Communication
Motivation
DelegationzConflict Management)PreparationzActive ListeningzCreative Problem Solving
CompromisezRelationship Management)zProblem DiagnosiszTechnical CommunicationPatienceDocumentationz	Follow-up)zCustomer ServiceSales
LeadershipNegotiationzTechnical Support)Communicationr=   ProfessionalismAdaptabilityzResults Orientation)get)r   r   skill_mappingss      r   get_default_skills_for_categoryz1ScenarioGenerator.get_default_skills_for_categoryJ   s?    !";$
L !!( -
  	r   N)__name__
__module____qualname__r   strr   r   r   r   r   r3   r6   r:   rM   r$   r   r   r   r      s    *2 2 2d3PS8n 2 #2362JNs)2X`aqXr2h :J1K 2$tCH~*> 2. .S	 .r   r   N)typingr   r   r   r   models.scenarior   services.groq_servicer   utils.json_handlerr	   r   r$   r   r   <module>rV      s     , , , - *r rr   