
    K{j$                    
   S r SSKJr  SSKrSSKrSSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  \R                  " \5      rS	rSS
 jrSS jrSS jrSS jr S       SS jjr S         SS jjr        SS jrg)zUPersist Agents psychoped fields into psychopedagogical_evaluation_info (ficha admin).    )annotationsN)datetime)Any)Session) PsychopedagogicalEvaluationClass)FolderModel   c                    U HR  nU R                  U5      nUc  M  [        U5      R                  5       (       d  M9  [        U5      R                  5       s  $    g)N )getstrstrip)replacementskeyskeyvalues       aC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\utils\agents_psychoped_report_store.py
_pick_textr      sL      %U!1!1!3!3u:##%%      c                8   U (       a  [        U 5      R                  5       (       d  g [        U 5      R                  5       nS HW  n UR                  S5      (       a  UR                  5       S   OUS S n[        R
                  " X25      R                  S5      s  $    [        R                  " SU5      nU(       a7  UR                  S5       SUR                  S	5       SUR                  S
5       3$ [        R                  " SU5      nU(       ai  [        UR                  S5      5      [        UR                  S	5      5      [        UR                  S
5      5      pn [	        XU5      R                  S5      $ g ! [         a     GMF  f = f! [         a     g f = f)N)z%d/%m/%Yz%d-%m-%Y%Y-%m-%dz%dr   
   r   z(\d{4})-(\d{2})-(\d{2})   -      z!(\d{1,2})[/-](\d{1,2})[/-](\d{4}))r   r   
startswithsplitr   strptimestrftime
ValueErrorresearchgroupint)	r   rawfmtpartmm2dmoys	            r   _parse_date_isor.      sP   E
((**
e*


C3	%(^^D%9%9399;q>s3BxD$$T/88DD 4 			,c2A''!*Qqwwqzl!AGGAJ<88	7	=B	rxx{#S!%5s288A;7Gq	A1%..z::   		  		s%   AE:F :
F	F	
FFc                R   [        U S5      R                  5       n[        U S5      nUS;   a  gUS;   a  gUS;   a  SU=(       d    S	4$ [        U S
5      n[        U S5      n[        U S5      nU(       a  gU(       a  gU(       a%  UR                  5       S;  a  UO
U=(       d    S	nSU4$ g)uQ   Plantilla admission_type_1|2|3 o form admission_type → (admission_type, other).admission_typeadmission_type_other)ingresoingreso_pienuevo	admission)r2   N)reevaluacionu   reevaluaciónre_evaluacionrevaluation)r6   N)otrootraotrosr9   Nadmission_type_1admission_type_2admission_type_3)XSI   SÍ1)NN)r   lowerupper)r   r&   othert1t2t3	other_vals          r   _admission_from_templaterJ   5   s    
\#3
4
:
:
<C|%;<E
>>
OO#
''u}$$	L"4	5B	L"4	5B	L"4	5B		#	((*,CCBRV	y  r   c                4   0 nU R                  5        GH   u  p#[        R                  " S[        U5      R	                  5       5      nU(       d  M=  [        U=(       d    S5      R	                  5       R                  5       nUS;  a  Mu  [        UR                  S5      5      n[        UR                  S5      5      nUS:  d  US:  a  M  US:X  a  SO
[        U5      nSUs=::  a  S::  a  O  O	XS	U 3'   M  S
Us=::  a  S::  d  M  O  M  XSUS-
   3'   GM     U$ )u   
scale_{row}_{col}=X en plantilla → pedagogical_scale_N / social_communicative_scale_N.
Filas 1–10 pedagógicas; 11–20 social (indicador 1–10).
zscale_(\d+)_(\d+)r   )r?   rB   r@   rA   TRUEr   r      zN/Or   pedagogical_scale_      social_communicative_scale_)itemsr"   	fullmatchr   r   rD   r%   r$   )	r   outr   r   r)   markrowcol	scale_vals	            r   _scales_from_template_marksrY   N   s    
 C"((*
LL-s3x~~/?@5;B%%'--/66!''!*o!''!*o7cAg AXE3s8	>r>.7$SE*+3_"__<E-cBhZ89 +  Jr   c                   U=(       d    0 n[        U5      u  pE0 SU _S[        USSS5      _S[        USSS5      _S[        [        USS	5      5      _S
[        US
SS5      _S[        [        USSS5      5      _SU_SU_S[        USS5      _S[        USS5      _S[        USS5      _S[        USS5      _S[        USS5      _S[        USS5      _S[        USS5      _S [        US S!5      _S"[        US"S#5      _[        US$S%5      [        US&S'5      [        US(S)5      [        US*S+5      [        US,S-5      [        US.S/5      [        US0S15      [        US2S35      S4.En[        S5S65       H?  n[        US7U 35      nU(       a  XS7U 3'   [        US8U 35      n	U	(       d  M8  XS8U 3'   MA     [	        U5      R                  5        H  u  pUR                  X5        M     UR                  S95      (       a  UR                  S95      US9'   SU 0nUR                  5        HB  u  pU
S:X  a  M  Uc  M  [        U[        5      (       a  UR                  5       (       d  M>  XU
'   MD     U$ ):u[   Mapea tags de plantilla / fields del agente → columnas psychopedagogical_evaluation_info.
student_idsocial_namestudent_social_namenombre_socialagestudent_ageedadevaluation_datefecha_evaluacion	diagnosis
diagnosticdiagnosticodiagnosis_issue_date
issue_datefecha_emision_diagnosticor0   r1   instruments_appliedinstrumentos_aplicadosschool_history_backgroundantecedentes_historia_escolarcognitive_analysisanalisis_cognitivopersonal_analysis analisis_personal_socioemocionalmotor_analysis"analisis_motor_autonomia_sensorialcognitive_synthesissintesis_cognitivapersonal_synthesissintesis_personalmotor_synthesissintesis_motorasuggestions_to_schoolsugerencias_al_establecimientosuggestions_to_classroom_teamsugerencias_al_equipo_de_aulasuggestions_to_studentsugerencias_al_estudiantesuggestions_to_familysugerencias_a_la_familiaother_suggestionsotras_sugerencias
conclusionconclusion_informe"professional_identification_numberrut_profesional professional_registration_numberregistro_profesionalprofessional_specialtyespecialidad_profesional)r|   r~   r   r   r   r   r   r   r   rO   rN   rQ   professional_id)rJ   r   r.   rangerY   rR   
setdefaultr   
isinstancer   r   )r[   r   student_contextctxr0   admission_otherpayloadipedsocr   valcleanedr   s                 r   build_psychoped_store_payloadr   g   s    
RC&>|&L#NQjQz-)>
Q
 	z,}fEQ 	?|%68JK
Q 	Z+|]
Q 	&+	!
Q( 	.)Q* 	+Q, 	z/1I 
-Q2 	$Z'+&
3Q< 	j.0D
=QB 	Z-/Q
CQH 	**,P
IQN 	z/1E 
OQT 	j.0C
UQZ 	:+->
[Q` 	 13S"
aQf *4++*

 #-24O#
 ",13M"
 (-/B
 !,(<
 /90/

 -7."-

 #-24N#
]QGh 1b\);A3'?@03(,-)DQC'HI39<1!56  0=CCE3$ F ww !!%(WW->%?!"+Z8Gmmo
,=eS!!%++-- & Nr   c                    [        XU5      n[        U 5      R                  U5      nUR                  S5      S:X  a&  [        R                  SUUR                  S5      5        U$ )zICrea/actualiza psychopedagogical_evaluation_info con el texto del agente.statuserrorz=psychopedagogical_evaluation_info store failed student=%s: %smessage)r   r   storer   loggerwarning)dbr[   r   r   r   results         r   persist_psychoped_from_agentr      s[     ,JoVG-b177@Fzz(w&KJJy!	

 Mr   c                p   U(       a  U(       d  g  U R                  [        5      R                  [        R                  U:H  5      R	                  5       nUc  g [        U5      Ul        U R                  5         g ! [         a2  nU R                  5         [        R                  SUUU5         S nAg S nAff = f)Nz-link folder %s to psychoped evaluation %s: %s)queryr   filteridfirstr%   	detail_idcommit	Exceptionrollbackr   r   )r   	folder_idevaluation_idrV   excs        r   #link_folder_to_psychoped_evaluationr      s    
 M
hh{#**;>>Y+FGMMO;M*
		 

;		
 	

s   AA9  A9 9
B5(B00B5)r   dict[str, str]r   r   returnr   )r   
str | Noner   r   )r   r   r   ztuple[str | None, str | None])r   r   r   r   )N)r[   r%   r   r   r   dict[str, Any] | Noner   dict[str, Any])
r   r   r[   r%   r   r   r   r   r   r   )r   r   r   
int | Noner   r   r   None)__doc__
__future__r   loggingr"   r   typingr   sqlalchemy.ormr   6app.backend.classes.psychopedagogical_evaluation_classr   app.backend.db.modelsr   	getLogger__name__r   PSYCHOPED_DOCUMENT_IDr   r.   rJ   rY   r   r   r    r   r   <module>r      s    [ "  	   " .			8	$ .28 .2uu u +u 	ux .2	 ! +	
 $


 
 
	
r   