§
    (×”jl  ã                  óh   — d dl mZ d dlZd dlZd dlmZ  ej        d¦  «        Z G d„ d¦  «        ZdS )é    )ÚannotationsN)ÚAnyzdscons.autonomous.documentsc                  ó   — e Zd ZdZdd„ZdS )	ÚHealDocumentsMixinz@Self-healing routines for pending/quarantined project documents.Ú
session_idÚstrÚreturnúdict[str, Any]c                óR  ‡— t                                d¦  «         ddlm} d}d}g }	 | j                             ¦   «         5 }|                     ¦   «         5 }|                     d¦  «         |                     ¦   «         }ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   t          |¦  «        }|D �]Št          ‰d         ¦  «        }	‰                     d¦  «        pd}
|                     |
¦  «        }d	}i }g }||
k    r||d<   |                     d
¦  «         d}‰                     d¦  «        pd}|dk    rdn	|dk    rdnd}‰                     d¦  «        }||k    r"||d<   |                     d|› d|› �¦  «         d}‰                     d¦  «        dv r:|r8d|d<   ‰                     d¦  «        dv rd|d<   |                     d¦  «         d}‰                     d¦  «        }|rit          j        dt          |¦  «                             ¦   «         ¦  «        s5|                     ddd|	d ‰                     d!¦  «        › d"|› d#�d$œ¦  «         |rc| j                             |	|¦  «         | j                             |dd|	d%ˆfd&„|D ¦   «         |d'                     |¦  «        d(d)œ	¦  «         |d*z  }‰                     d+¦  «        pd}‰                     d,¦  «        sÛ|d-v s,d.|                     ¦   «         v sd/|                     ¦   «         v r«	 | j                             |	¦  «        }|                     d,¦  «        rE|                     d0d1d2t          |d,         ¦  «        d3|                     d4¦  «        › d5�d$œ¦  «         �ŒÛ# t,          $ r'}t                                d6|	|¦  «         Y d}~�Œd}~ww xY w�ŒnO# t,          $ rB}t                                d7|¦  «         |                     dd8dd9|› �d:œ¦  «         Y d}~nd}~ww xY wdd;|||d<œS )=u„   Tá»± chuáº©n hÃ³a báº£ng documents: LÃ m sáº¡ch trÃ­ch yáº¿u, kiá»ƒm tra MST, cáº­p nháº­t audit readiness vÃ  liÃªn káº¿t dá»± Ã¡n.uV   [AUTONOMOUS] AI Tháº£o & Thá»§y báº¯t Ä‘áº§u quÃ©t phÃ¢n há»‡ Há»“ SÆ¡ & VÄƒn Báº£n...r   )ÚDocumentProcessingServiceaç  
                        SELECT id, document_code, document_title, document_type, document_group,
                               issuer_name, partner_name, partner_tax_code, issue_date,
                               signature_status, audit_readiness_score, verification_status,
                               status, project_id, file_path
                        FROM erp_documents
                        ORDER BY created_at DESC
                        LIMIT 100;
                    NÚidÚdocument_titleÚ Fu=   LÃ m sáº¡ch trÃ­ch yáº¿u loáº¡i bá»� nhÃ£n báº£o máº­t thá»«aTÚsignature_statusÚdraftÚfully_executedéd   Úsigned_unsigned_sealéK   é2   Úaudit_readiness_scoreu   Cáº­p nháº­t Audit Score tá»« u    lÃªn Úverification_status)Ú
processingNÚpending_reviewÚstatusuL   Chuyá»ƒn tráº¡ng thÃ¡i sang pending_review sau khi hoÃ n táº¥t trÃ­ch xuáº¥tÚpartner_tax_codez^\d{10}(-\d{3})?$ÚthaoÚwarningÚerp_documentsu   VÄƒn báº£n [Údocument_codeu   ] cÃ³ MST Ä‘á»‘i tÃ¡c 'u#   ' khÃ´ng Ä‘Ãºng chuáº©n 10/13 sá»‘.)ÚagentÚseverityÚtableÚ	record_idÚmessageÚnormalize_metadatac                ó<   •— i | ]}|‰                      |¦  «        “ŒS © )Úget)Ú.0ÚkÚdocs     €úUC:\Projects\DSCons\app\modules\agents\application\autonomous_engine\heal_documents.pyú
<dictcomp>z<HealDocumentsMixin.heal_documents_module.<locals>.<dictcomp>m   s%   ø€ Ð/UÐ/UÐ/UÀ!°°3·7²7¸1±:´:Ð/UÐ/UÐ/Uó    z; éb   )	r   Ú
agent_codeÚ
table_namer$   Úaction_typeÚsnapshot_beforeÚsnapshot_afterÚreasonÚconfidence_scoreé   Údocument_typeÚ
project_id)ÚTBÚQDÚHDu   má»�i tháº§uu   dá»± Ã¡nÚminhÚinfoÚprojectsu#   Tá»± Ä‘á»™ng liÃªn káº¿t Dá»± Ã¡n [Úproject_codeu   ] tá»« vÄƒn báº£n TBMT.u.   Bá»� qua tá»± táº¡o dá»± Ã¡n cho doc_id=%s: %su,   [AUTONOMOUS] Lá»—i heal_documents_module: %sÚerroru!   Lá»—i quÃ©t phÃ¢n há»‡ há»“ sÆ¡: )r!   r"   r#   r%   Ú	documents)r!   ÚmoduleÚscannedÚhealedÚfindings)Úloggerr?   Ú8app.modules.core.application.document_processing_servicer   Ú_erp_clientÚget_connectionÚcursorÚexecuteÚfetchallÚlenr   r)   Úsanitize_document_titleÚappendÚreÚmatchÚstripÚupdate_documentÚcreate_autonomous_healing_logÚjoinÚlowerÚcreate_project_from_documentÚ	ExceptionÚdebugrB   )Úselfr   r   rE   rF   rG   ÚconnÚcurÚdocsÚdoc_idÚoriginal_titleÚclean_titleÚneeds_updateÚupdate_fieldsÚreasonsÚ
sig_statusÚexpected_audit_scoreÚcurrent_audit_scoreÚtax_codeÚdoc_typeÚproj_resÚeÚexcr,   s                          @r-   Úheal_documents_modulez(HealDocumentsMixin.heal_documents_module   s  ø€ å�ŠØdñ	
ô 	
ð 	
ð 	gÐfÐfÐfÐfÐfàˆØˆØ)+ˆð|	ØÔ!×0Ò0Ñ2Ô2ð *°dØ—[’[‘]”]ð 
* cØ—K’Kð !ñ ô ð ð Ÿ<š<™>œ>�Dð
*ð 
*ð 
*ñ 
*ô 
*ð 
*ð 
*ð 
*ð 
*ð 
*ð 
*øøøð 
*ð 
*ð 
*ð 
*ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *õ ˜$‘i”iˆGØð bbñ bb�Ý˜S œY™œ�Ø!$§¢Ð)9Ñ!:Ô!:Ð!@¸b�Ø7×OÒOØ"ñô �ð  %�Ø02�Ø%'�ð  .Ò0Ð0Ø6A�MÐ"2Ñ3Ø—N’NÐ#bÑcÔcÐcØ#'�Lð !ŸWšWÐ%7Ñ8Ô8ÐC¸G�
ð "Ð%5Ò5Ð5ð �Cà *Ð.DÒ DÐ D˜"˜"È"ð %ð
 '*§g¢gÐ.EÑ&FÔ&FÐ#Ø&Ð*>Ò>Ð>Ø=Q�MÐ"9Ñ:Ø—N’NØjÐ9LÐjÐjÐThÐjÐjñô ð ð $(�Lð —G’GÐ1Ñ2Ô2Ð6JÐJÐJØ#ð Kð <L�MÐ"7Ñ8Ø—w’w˜xÑ(Ô(Ð,@Ð@Ð@Ø2B˜ hÑ/Ø—N’NØfñô ð ð $(�Lð Ÿ7š7Ð#5Ñ6Ô6�Øð ¥B¤HØ(­#¨h©-¬-×*=Ò*=Ñ*?Ô*?ñ%ô %ð ð —O’Oà%+Ø(1Ø%4Ø)/ð (U°c·g²g¸oÑ6NÔ6Nð  (Uð  (UÐgoð  (Uð  (Uð  (Uðð ñô ð ð  ð  ØÔ$×4Ò4°V¸]ÑKÔKÐKØÔ$×BÒBà*4Ø*0Ø*9Ø)/Ø+?Ø/UÐ/UÐ/UÐ/UÀ}Ð/UÑ/UÔ/UØ.;Ø&*§i¢i°Ñ&8Ô&8Ø02ð
ð 
ñô ð ð ˜a‘K�Fð Ÿ7š7 ?Ñ3Ô3Ð9°r�Ø—w’w˜|Ñ,Ô,ð bØÐ 2Ð2Ð2Ø%¨×):Ò):Ñ)<Ô)<Ð<Ð<Ø! [×%6Ò%6Ñ%8Ô%8Ð8Ð8ðbØ#'Ô#3×#PÒ#PÐQWÑ#XÔ#X˜Ø#Ÿ<š<¨Ñ5Ô5ð 	Ø$ŸOšOà-3Ø06Ø-7Ý14°X¸lÔ5KÑ1LÔ1Lð 0KÐU]×UaÒUaÐbpÑUqÔUqð  0Kð  0Kð  0Kð!"ð !"ñô ð ùøõ %ð bð bð bÝŸšÐ%UÐW]Ð_`ÑaÔaÐaÐaÐaÐaÐaÑaøøøøðbøøøùðCbbøõH ð 		ð 		ð 		Ý�LŠLÐGÈÑMÔMÐMØ�OŠOà#Ø 'Ø,ØHÀ3ÐHÐHð	ð ñô ð ð ð ð ð ð øøøøð		øøøð Ø!ØØØ ð
ð 
ð 	
s‹   ©O ÁB$Á*BÂB$ÂB	ÂB$ÂB	ÂB$ÂO Â$B(Â(O Â+B(Â,I8O Ì%A4NÎO Î
OÎ%OÏO ÏOÏO Ï
PÏ8PÐPN)r   r   r	   r
   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rn   r(   r/   r-   r   r   
   s4   € € € € € ØJÐJðO
ð O
ð O
ð O
ð O
ð O
r/   r   )	Ú
__future__r   ÚloggingrR   Útypingr   Ú	getLoggerrH   r   r(   r/   r-   ú<module>rw      sŠ   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð à	ˆÔ	Ð8Ñ	9Ô	9€ðR
ð R
ð R
ð R
ð R
ñ R
ô R
ð R
ð R
ð R
r/   