
    FCi                        d Z ddlmZmZ ddlmZmZmZ ddlmZ ddl	m
Z
  G d de      Z G d d	e      Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d  d!e      Z G d" d#e      Zy$)%u3   
Schémas Pydantic pour le module de quiz flexible
    )	BaseModelField)ListOptionalAny)datetime)CategoryQuestionTypec                   N    e Zd ZU dZ edd      Zeed<    edd      Zeed<   y)	CategoryQuestionOptionu)   Schéma pour une option de réponse (QCM).z-Identifiant unique de l'option (ex: 'a', 'b')descriptionidzTexte de l'optiontextN)	__name__
__module____qualname____doc__r   r   str__annotations__r        A/home/www/lebenam.kofcorporation.com/app/schemas/flexible_quiz.pyr   r      s)    3C%TUBUc':;D#;r   r   c                       e Zd ZU dZeed<   eed<   dZee	e
      ed<    edd      Zeed	<   dZee   ed
<   dZee   ed<   y)CategoryQuestionBaseu@   Base pour la création/mise à jour d'une question de catégoriequestionquestion_typeNoptions_data.u-   Données de la bonne réponse (JSON flexible)r   correct_answer_dataexplanationT	is_active)r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r    boolr   r   r   r   r      sT    JM'';?L(4 678?$S6eff!%K#% $Ix~$r   r   c                       e Zd Zy)CategoryQuestionCreateNr   r   r   r   r   r   r#   r#          r   r#   c                   J    e Zd ZU dZee   ed<   dZee   ed<   dZ	ee
   ed<   y)CategoryQuestionUpdateNr   r   r   )r   r   r   r   r   r   r   r   r	   r   r   r   r   r   r'   r'      s/    "Hhsm"48M8018)-#-r   r'   c                   @    e Zd ZU eed<   eed<   eed<    G d d      Zy)CategoryQuestionResponser   category_id
created_atc                       e Zd ZdZy)CategoryQuestionResponse.ConfigTNr   r   r   from_attributesr   r   r   Configr-   '       r   r0   N)r   r   r   intr   r   r0   r   r   r   r)   r)   "   s    G r   r)   c                   l    e Zd ZU dZeed<   dZee   ed<   dZee	   ed<   dZ
ee	   ed<   d	Zee   ed
<   y)QuizCategoryBaseu<   Base pour la création/mise à jour d'une catégorie de quiztitleNr   
   number_of_questionsF   passing_scoreTr    )r   r   r   r   r   r   r   r   r7   r2   r9   r    r!   r   r   r   r4   r4   *   sC    FJ!%K#%)+#+#%M8C=% $Ix~$r   r4   c                       e Zd Zy)QuizCategoryCreateNr$   r   r   r   r;   r;   2   r%   r   r;   c                   "    e Zd ZU dZee   ed<   y)QuizCategoryUpdateNr5   )r   r   r   r5   r   r   r   r   r   r   r=   r=   5   s    E8C=r   r=   c                   J    e Zd ZU eed<   eed<   g Zee   ed<    G d d      Z	y)QuizCategoryResponser   r+   	questionsc                       e Zd ZdZy)QuizCategoryResponse.ConfigTNr.   r   r   r   r0   rB   =   r1   r   r0   N)
r   r   r   r2   r   r   r@   r   r)   r0   r   r   r   r?   r?   8   s'    G02It,-2 r   r?   c                   N    e Zd ZU dZeed<   eed<   eed<   eed<    G d d      Zy)	QuizStartResponseu%   Réponse lors du démarrage d'un quiz
attempt_idr*   r5   r7   c                       e Zd ZdZy)QuizStartResponse.ConfigTNr.   r   r   r   r0   rG   I   r1   r   r0   N)r   r   r   r   r2   r   r   r0   r   r   r   rD   rD   B   s%    /OJ r   rD   c                   ^    e Zd ZU dZeed<   eed<   eed<   dZe	e
e      ed<    G d d      Zy)	QuestionForUseru>   Question envoyée à l'utilisateur (sans la réponse correcte)r   r   r   Nr   c                       e Zd ZdZy)QuestionForUser.ConfigTNr.   r   r   r   r0   rK   S   r1   r   r0   )r   r   r   r   r2   r   r   r	   r   r   r   r   r0   r   r   r   rI   rI   L   s4    HGM'';?L(4 678? r   rI   c                   ,    e Zd ZU dZeed<   ee   ed<   y)QuizQuestionsResponseu2   Liste des questions générées pour l'utilisateurrE   r@   N)r   r   r   r   r2   r   r   rI   r   r   r   rM   rM   V   s    <OO$$r   rM   c                   :    e Zd ZU dZeed<    edd      Zeed<   y)
UserAnsweru+   Réponse de l'utilisateur pour une questionquestion_id.u8   Données de la réponse de l'utilisateur (JSON flexible)r   answer_dataN)	r   r   r   r   r2   r   r   rQ   r   r   r   r   rO   rO   [   s    5S.hiKir   rO   c                   "    e Zd ZU dZee   ed<   y)QuizSubmissionu.   Soumission complète du quiz par l'utilisateuranswersN)r   r   r   r   r   rO   r   r   r   r   rS   rS   `   s    8*r   rS   c                   X    e Zd ZU dZeed<   eed<   eed<   eed<   eed<    G d d      Zy	)
QuizAttemptResponseu"   Réponse après soumission du quizrE   r*   scorepassedcompleted_atc                       e Zd ZdZy)QuizAttemptResponse.ConfigTNr.   r   r   r   r0   r[   l   r1   r   r0   N)	r   r   r   r   r2   r   r!   r   r0   r   r   r   rV   rV   d   s*    ,OJL r   rV   N)r   pydanticr   r   typingr   r   r   r   app.models.flexible_questionr	   r   r   r#   r'   r)   r4   r;   r=   r?   rD   rI   rM   rO   rS   rV   r   r   r   <module>r_      s    & & &  =<Y <
%9 %	1 	.1 .
3 %y %	) 	 )  + 	 i %I %
j j
Y 	) 	r   