o
    i%                     @   s|  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!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d0dZ ed1ed,ed,fded-e$fd2dZ ed3ed,ed,fd-e$defd4dZ ed5ed,ed,ed,fd6e$d7e$defd8dZ ed9ed,ed,fded-e#fd:dZ dS );    )	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   sP   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.   }   s   z/run-audiocreationc              
      sX   zt | }t|I dH }td|  |W S  ty+ } z	tdd| dd}~ww )z@
    Creates audio files for existing content and questions
    NzAudio creation response: r#   r$   r%   )r   run_audio_creation_asyncr2   r*   r   r:   r   r   r   run_audio_creation   s   r<   c                    s*   ddl }| }|d| jI dH }|S )z Async wrapper for audio creationr   N)asyncioget_event_looprun_in_executorr<   )r   r=   loopr,   r   r   r   r;      s   
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 rA   )r2   rC   r   display_contentr*   r   r   rF   r   rE   r-   r   r   r   r.         
z/session-qn-listc              
   C   rG   rA   )r2   rC   r   list_qnsr*   r   rI   r   r   r   r.      rJ   z	/questionc              
   C   rG   rA   )r2   rC   r   display_questionr*   r   rI   r   r   r   r.      rJ   z/qn-evaluationc              
   C   sd   t d|  t dt|  zt|}|| }|W S  ty1 } z	tdd| dd}~ww rA   )r2   rC   r   evaluate_individual_qnr*   r   )rF   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 rA   )r2   rC   r   evaluate_individual_qn_ans_pairr*   r   )rO   rP   r   r   rN   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"   rB   r#   r$   r%   N)r2   r   play_contentr+   r*   r   )r   rF   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<   r;   dictstrr   r   r   r   <module>   sz    ",