
    sIjD                        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S jjrSS jr S       SS jjr S         SS jjr        SS jrg)zFPersist Agent v2 familia field text into family_reports (ficha admin).    )annotationsN)datetime)Any)Session)FamilyReportClass)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       `C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\utils\agent_v2_family_report_store.py
_pick_textr      sL      %U!1!1!3!3u:##%%      c                   [        U S5      nU(       d8  U(       a1  [        UR                  S5      =(       d    S5      R                  5       nU(       d  gUR                  5       R	                  5       nUS;   a  gUS;   a  gg)u>   MySQL ENUM('admission','revaluation') no acepta cadena vacía.evaluation_typer   	admission)revaluationu   reevaluaciónreevaluacionreeval2r   )r   u	   admisiónadmisioningreso1)r   r   r   r   lower)r   student_contextrawnorms       r   _normalize_evaluation_typer$      so    
 \#4
5C?/%%&78>B?EEG99;DNNEEr   c                4   U (       a  [        U 5      R                  5       (       d  g [        U 5      R                  5       nS Hm  n US:X  a:  UR                  5       S   n[        R                  " X25      R                  S5      s  $ [        R                  " US S U5      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$ g ! [         a     M  f = f)N)%d/%m/%Yz%d-%m-%Y%Y-%m-%dr&   r   r'   
   z(\d{4})-(\d{2})-(\d{2})   -      )
r   r   splitr   strptimestrftime
ValueErrorresearchgroup)r   r"   fmtpartms        r   _parse_born_date_isor7   .   s    E
((**
e*


C3	j yy{1~((3<<ZHH$$S"Xs3<<ZHH 4 			,c2A''!*Qqwwqzl!AGGAJ<88  		s   =D	(D		
DDc           
        U=(       d    0 n[        USSSS5      n0 SU _S[        _S[        USSS	5      =(       d1    [        UR                  S
5      =(       d    S5      R	                  5       _S[        USSSS5      =(       d1    [        UR                  S5      =(       d    S5      R	                  5       _S[        USS5      _S[        U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S5      _S[        USS5      _S[        USS 5      _S![        US!S"5      _S#[        [        US#S$5      5      _S%[        US%S&S'5      _S([        US)S(5      _0 S*[        US*S+5      _S,[        US,S-5      _S.[        US.S/5      _S0[        US0S15      _S2[        US2S35      _S4[        X5      _S5[        [        US55      5      _S6[        US65      _S7[        US7S85      _S9[        US9S:5      _S;[        US;S<5      _S=[        US=S>5      _S?[        US?S@5      _SA[        USASB5      _SC[        USCSD5      _SE[        USE5      _SF[        USFSGSH5      _E[        USISJSK5      [        [        USL5      5      [        [        USM5      5      [        [        USN5      5      SO.EnUR                  SP5      (       a  UR                  SP5      USP'   U$ )Qu<   Mapea campos de plantilla lucIA → columnas family_reports.student_born_datestudent_birth_date	born_date
birth_date
student_iddocument_type_idstudent_full_name	full_namestudent_namestudent_fullnamer   student_identification_numberidentification_numberstudent_rutrutstudent_social_namesocial_namestudent_ageagestudent_coursecoursestudent_schoolschool"professional_identification_numberprofessional_rutprofessional_social_nameprofessional_full_nameprofessional_nameprofessional_roleprofessional_job_positionprofessional_phonephprofessional_emailemreport_delivery_date"professional_delivered_date_informreceiver_full_nameperson_full_nameperson_namereceiver_identification_numberperson_identification_numberreceiver_social_nameperson_social_namereceiver_phoneperson_phonereceiver_emailperson_emailreceiver_relationshipperson_relation_studentreceiver_presence_ofperson_presencer   evaluation_dateapplied_instruments	diagnosis
diagnosticpedagogical_strengthspedagogical_field_1pedagogical_support_needspedagogical_field_2social_affective_strengthssocial_field_1social_affective_support_needssocial_field_2health_strengthsstrengths_3health_support_needssupport_needs_3collaborative_workhome_supportsupportshome_based_descriptionagreements_commitments
agreementsschool_family_agreementsevaluation_date_1evaluation_date_2evaluation_date_3)r   r   r   r   professional_id)r   FAMILIA_DOCUMENT_TYPE_IDr   r   r   r7   r$   )r=   r   r!   ctxborn_rawpayloads         r   !build_family_report_store_payloadr   @   sq    
RCH\j\4\ 	Z-{N
 : sww)*0b1779\ 	(+#*
 *? sww./526<<>\ 	z,8M}]\  	1(;!\" 	z,uE#\$ 	*\3CXN%\& 	*\3CXN'\( 	-j>@R/
)\. 	#J46NPc%
/\4 	Z-/J
5\: 	j7KTR;\< 	j7KTR=\> 	 4&4!
?\L 	j.0BM
M\R 	)*8:Z+
S\X 	
<9OQe fY\Z 	*\3C^T[\\ 	*\3C^T]\^ 	 13L"
_\d 	
02C!
e\j 	5lHk\l 	/
<IZ0[\m\n 	z,8MNo\p 	Zk<Hq\r 	 13H"
s\x 	$Z57L&
y\~ 	%j68H'
\D 	)*:<L+
E\J 	J|5GWK\L 	
02C!
M\R 	j7KLS\T 	
.*6N
U\Z #-$&	#
 2|%89
 2|%89
 2|%89
s\G| ww !!%(WW->%?!"Nr   c                    [        XU5      n[        U 5      R                  U5      nUR                  S5      S:X  a%  [        R                  SXR                  S5      5        U$ )zFGuarda una fila en family_reports con el texto redactado por Agent v2.statuserrorz*family_reports store failed student=%s: %smessage)r   r   storer   loggerwarning)dbr=   r   r!   r   results         r    persist_family_report_from_agentr      sV     0
/ZGr"((1Fzz(w&CZQ[Q[\eQfgMr   c                n   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 ! [         a1  nU R                  5         [        R                  SXU5         S nAg S nAff = f)Nz&link folder %s to family_report %s: %s)queryr   filteridfirstint	detail_idcommit	Exceptionrollbackr   r   )r   	folder_idfamily_report_idrowexcs        r   link_folder_to_family_reportr      s    
 ,chh{#**;>>Y+FGMMO;,-
		 c
?^abbcs   AA9  A9 9
B4'B//B4)r   dict[str, str]r   r   returnr   )N)r   r   r!   dict[str, Any] | Noner   
str | None)r   r   r   r   )r=   r   r   r   r!   r   r   dict[str, Any])
r   r   r=   r   r   r   r!   r   r   r   )r   r   r   
int | Noner   r   r   None)__doc__
__future__r   loggingr1   r   typingr   sqlalchemy.ormr   'app.backend.classes.family_report_classr   app.backend.db.modelsr   	getLogger__name__r   r   r   r$   r7   r   r   r    r   r   <module>r      s    L "  	   " E -			8	$  .2 * $* .2pp p +p 	pn .2	 ! +	
 ccc !c 
	cr   