o
    4jsi$                     @   st  d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 ddl
mZ ddlmZ d dlZd d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ e Zdd Zdd Zdd Zdd Zdd ZeddefddZ eddefddZ eddefddZ ed defd!dZ ed"defd#dZ ed$defd%d&Z!ed'defd(dZ ed)ed*ed*fded+e"fd,dZ ed-ed*ed*fded+e"fd.dZ ed/ed*ed*fded+e#fd0dZ ed1ed*ed*fd+e#defd2dZ ed3ed*ed*ed*fd4e#d5e#defd6dZ ed7ed*ed*fded+e"fd8dZ dS )9    )	APIRouterHTTPExceptionBody)	BaseModel)Optional)UserJourney   )QueryRequest)HashGeneratorNMicrolearningServiceContentCreationServiceDefaultEstimatorSummaryCreationServiceEvaluationServicec                 C      t | }|S Nr   
input_dataservice r   v/home/azureuser/microlearn/backend/user_journey_with_openai/agentic_workflow/src/user_journey_service/api/endpoints.pyget_microlearning_service      r   c                 C   r   r   r   r   r   r   r   get_content_creation_service   r   r   c                 C   r   r   r   r   r   r   r   get_evaluation_service   r   r   c                 C   r   r   r   r   r   r   r   get_defaults_service   r   r    c                 C   r   r   r   r   r   r   r   get_summary_creation_service"   r   r!   z	/run-crewr   c              
   C   sB   zt | }| }|W S  ty  } z	tdd| dd}~ww )6
    Run AI development crew with provided input.
      Unexpected error: status_codedetailN)get_user_interaction_servicerun	Exceptionr   )r   run_evaluationresponseer   r   r   run_crew&   s   	r.   z/run-defaultsc                 C   s(   t | }| }|d dkr| }|S )r"   statusfailed)r    r)   )r   r   r,   r   r   r   r.   >   s
   z/run-journeyc              
   C   s   z)t d|   t| }| }t d|  t d|  |d dkr'|W S |W S  tyT } zddl}| }t d|  t d	|  td
d| dd}~ww )r"   z!Starting run-journey with input: zResponse from run_journey: z#the response from first satge is : messagezInvalid topic.r   NzERROR in run-journey: zTraceback: r#   r$   r%   )printr   run_journeyr*   	traceback
format_excr   )r   user_journeyservicer,   r-   r4   error_detailsr   r   r   r.   V   s"   z/run-summaryc              
   C   sJ   zt | }td | }|W S  ty$ } z	tdd| dd}~ww )r"   zService initialised..r#   r$   r%   N)r!   r2   r)   r*   r   )r   run_summaryr,   r-   r   r   r   r.   n   s   z/run-contentcreationc              
   C   P   zt | }| }td|  |W S  ty' } z	tdd| dd}~ww )z?
    Creates content and questions for all modules/lessons
    zContent creation response: r#   r$   r%   N)r   run_content_creationr2   r*   r   r   r   r,   r-   r   r   r   r.   }      z/run-audiocreationc              
   C   r9   )z@
    Creates audio files for existing content and questions
    zAudio creation response: r#   r$   r%   N)r   run_audio_creationr2   r*   r   r;   r   r   r   r=      r<   r=   z/session-listc              
   C   sb   t d|   t dt|   zt| }| }|W S  ty0 } z	tdd| dd}~ww r"   the input data is : zthe input data type is : r#   r$   r%   N)r2   typer   update_parsed_course_contentr*   r   )r   r   filesr-   r   r   r   r.      s   z/session-content.filec              
   C   d   t d|   t dt|   zt| }||}|W S  ty1 } z	tdd| dd}~ww r>   )r2   r@   r   display_contentr*   r   r   rC   r   rB   r-   r   r   r   r.         
z/session-qn-listc              
   C   rD   r>   )r2   r@   r   list_qnsr*   r   rF   r   r   r   r.      rG   z	/questionc              
   C   rD   r>   )r2   r@   r   display_questionr*   r   rF   r   r   r   r.      rG   z/qn-evaluationc              
   C   sd   t d|  t dt|  zt|}|| }|W S  ty1 } z	tdd| dd}~ww r>   )r2   r@   r   evaluate_individual_qnr*   r   )rC   r   r   feedbackr-   r   r   r   r.      s   
z/evaluate_answerquestionanswerc              
   C   sf   t d|  t dt|  zt|}|| |}|W S  ty2 } z	tdd| dd}~ww r>   )r2   r@   r   evaluate_individual_qn_ans_pairr*   r   )rL   rM   r   r   rK   r-   r   r   r   r.      s   z/run-evaluationc              
   C   sd   t d|   zt| }t | || || W dS  ty1 } z	tdd| dd}~ww )r"   r?   r#   r$   r%   N)r2   r   play_contentr+   r*   r   )r   rC   r   r-   r   r   r   r.     s   
)$fastapir   r   r   pydanticr   typingr   user_journey_service.crewr   models.schemasr	   utils.hashingr
   os2user_journey_service.services.user_journey_servicer   6user_journey_service.services.content_creation_servicer   .user_journey_service.services.defaults_servicer   6user_journey_service.services.summary_creation_servicer   0user_journey_service.services.evaluation_servicer   routerr   r   r   r    r!   postr.   r=   dictstrr   r   r   r   <module>   sx    ",