§
    ‰šjÂ#  ã                  ód   — d dl mZ d dlZd dlZd dlZ ej        d¦  «        Z G d„ d¦  «        ZdS )é    )ÚannotationsNz#dscons.document_processing.pipelinec                  ó   — e Zd ZdZdd	„Zd
S )ÚDocumentPipelineMixinzAEnd-to-end background document processing pipeline orchestration.Údoc_idÚstrÚfile_path_strÚfilenameÚfile_formatÚreturnÚNonec              ƒ  óF  K  — t                                d||¦  «         |                      ||¦  «        }|sd|› d�}|                      ||¦  «        ƒ d{V —†}ddlm} d}t          j                             |¦  «        rN	 t          |d¦  «        5 }	|	 
                    ¦   «         }ddd¦  «         n# 1 swxY w Y   n# t          $ r Y nw xY w|                     |||¬¦  «        \  }
}}|
s2|                     d	¦  «        d
k    s|                     d¦  «        dk    r¸|pd}d
|d	<   d|d<   	 |rt|                     |||¬¦  «        \  }} || j        ¦  «        }|                     |||¬¦  «        }t                                d|||                     dd¦  «        ¦  «         n2# t          $ r%}t                                d|¦  «         Y d}~nd}~ww xY w|                      ||¦  «        }|                      |||¦  «        ƒ d{V —†}||                     d¦  «        pg z   }t)          |                     d¦  «        pd¦  «        }t+          d„ |D ¦   «         ¦  «        }t-          dt/          d||dz  z
  ¦  «        ¦  «        }|dk     s|dk    rd}d}d}nd}d}d}|                     d¦  «        pd}|dk    rdn	|d k    rd!nd"}| j                             |¦  «        pi }|                     d#¦  «        }|                     d#¦  «        pM|r|                     d$¦  «        s|n4d$t5          j        ¦   «         j        dd%…                              ¦   «         › �} |                     d&¦  «        }!|!r|                      |!|¦  «        n*|                     d&¦  «        p|                      ||¦  «        }"|                     d'¦  «        p|                     d'¦  «        pd(}#|#r|                      |#d(¦  «        n|#}$|                     d)¦  «        p|                     d)¦  «        pd*}%|                     d+¦  «        p|                     d+¦  «        p|%}&|                     d,¦  «        p|                     d,¦  «        }'i d#| “d&|"“d|                     d¦  «        p|                     d¦  «        pd-“d	|                     d	¦  «        p|                     d	¦  «        pd.“d/d0“d|“d1|                     d1¦  «        pd0“d2|                     d2¦  «        pd3“d+|&“d4|                     d4¦  «        p|                     d4¦  «        “d)|%“d5|%pd6“d7|                     d7¦  «        p|                     d7¦  «        “d,|'“d8|'“d'|$“d9|$“|                     d:¦  «        p|                     d:¦  «        |                     d;¦  «        p|                     d;¦  «        pg ||||                     d<¦  «        pd=|||d>œ	¥}(	 | j                             ||(¦  «         t                                d?|¦  «         |(                     d	¦  «        pd.})|                     d@¦  «        s–|)dAv s,dB|"                      ¦   «         v sdC|"                      ¦   «         v rht                                dD||"¦  «         | j         !                    |¦  «        }*t                                dE|*                     dF¦  «        ¦  «         dS dS dS # t          $ r'}+t            "                    dG||+¦  «         Y d}+~+dS d}+~+ww xY w)Hz`Run text extraction, AI analysis, Deterministic rules, Cross-Agent Audit and Staging Quarantine.z+Starting AI pipeline for doc_id=%s, file=%suG   KhÃ´ng cÃ³ ná»™i dung vÄƒn báº£n nÃ o Ä‘Æ°á»£c trÃ­ch xuáº¥t tá»« file ú.Nr   )ÚUncClassifierAndRouterÚrb)r	   ÚtextÚcontentÚdocument_typeÚUNCÚdocument_groupÚ	financialÚOTHER)Úfile_contentr	   Ú	bank_code)Ú	file_pathr   r   z:Pipeline auto-routed UNC doc_id=%s to %s (inserted %d txs)Úinsertedz'Pipeline fallback UNC routing error: %sÚflagsÚconfidence_scoreéU   c                óD   — g | ]}|                      d ¦  «        dk    ¯|‘ŒS )ÚseverityÚerror)Úget)Ú.0Úfs     úOC:\Projects\DSCons\app\modules\core\application\document_processing\pipeline.pyú
<listcomp>z6DocumentPipelineMixin.run_pipeline.<locals>.<listcomp>R   s.   € ÐPÐPÐP °1·5²5¸Ñ3DÔ3DÈÒ3OÐ3O˜1Ð3OÐ3OÐ3Oó    éd   é   éP   ÚquarantinedÚclearÚpending_reviewÚsignature_statusÚdraftÚfully_executedÚsigned_unsigned_sealéK   é2   Údocument_codezTEMP-é   Údocument_titleÚsummary_contentÚ Úissuer_nameu:   Trung tÃ¢m Dá»‹ch vá»¥ sá»± nghiá»‡p cÃ´ng xÃ£ Kiáº¿n MinhÚpartner_nameÚ
issue_dateÚdispatchÚCVÚcategoryÚincomingÚdocument_directionÚproject_stageÚstage_01_initiationÚpartner_tax_codeÚissuing_authorityu
   KhÃ´ng rÃµÚsigner_nameÚ	sign_dateÚai_analysis_summaryÚai_risk_assessmentÚai_legal_referencesÚcross_audit_summaryu$   Ä�Ã£ Ä‘á»‘i soÃ¡t chÃ©o hoÃ n táº¥t.)	rH   rI   Úaudit_readiness_scoreÚocr_confidence_scoreÚocr_validation_flagsrJ   Úquarantine_statusÚstatusÚverification_statusz>Successfully updated document doc_id=%s with Cross-Agent AuditÚ
project_id)ÚTBÚQDÚHDu   má»�i tháº§uu   dá»± Ã¡nz;Auto-initiating tender project from document doc_id=%s (%s)zProject initiation result: %sÚmessagezBFailed to save AI extraction or initiate project for doc_id=%s: %s)#ÚloggerÚinfoÚextract_textÚanalyze_with_aiÚ9app.modules.banking.application.unc_classifier_and_routerr   ÚosÚpathÚexistsÚopenÚreadÚ	ExceptionÚdetect_unc_and_bankr"   Úroute_to_hot_folderÚ_erp_clientÚingest_statement_fileÚwarningÚvalidate_deterministic_rulesÚrun_cross_agent_auditÚintÚlenÚmaxÚminÚget_documentÚ
startswithÚuuidÚuuid4ÚhexÚupperÚsanitize_document_titleÚupdate_documentÚlowerÚcreate_project_from_documentr!   ),Úselfr   r   r	   r
   r   Ú	ai_resultr   Úf_bytesr$   Úis_unc_textÚbank_from_textÚ_r   Útarget_folderÚtarget_fileÚ
router_svcÚ
ingest_resÚunc_errÚdeterministic_flagsÚcross_audit_resÚ	all_flagsÚ	raw_scoreÚerror_countÚfinal_confidence_scorerN   rO   rP   Ú
sig_statusÚaudit_scoreÚexisting_docÚexisting_codeÚfinal_doc_codeÚ	raw_titleÚclean_titleÚraw_summaryÚclean_summaryÚissuerÚpartnerr;   Úupdate_payloadÚdoc_typeÚproj_resÚes,                                               r%   Úrun_pipelinez"DocumentPipelineMixin.run_pipeline   s{	  è è € õ 	�ŠÐAÀ6È8ÑTÔTÐTØ× Ò  °Ñ<Ô<ˆØð 	iØhÐ]eÐhÐhÐhˆDð ×.Ò.¨t°XÑ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>ˆ	ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð ˆÝŒ7�>Š>˜-Ñ(Ô(ð 	ðÝ˜-¨Ñ.Ô.ð '°!ØŸfšf™hœh�Gð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'øøåð ð ð Ø�ðøøøð *@×)SÒ)SØØØð *Tñ *
ô *
Ñ&ˆ�^ Qð ð	Sà�}Š}˜_Ñ-Ô-°Ò6Ð6Ø�}Š}Ð-Ñ.Ô.°+Ò=Ð=à&Ð1¨'ˆIØ).ˆI�oÑ&Ø*5ˆIÐ&Ñ'ðSØð Ø1G×1[Ò1[Ø%,Ø!)Ø"+ð 2\ñ 2ô 2Ñ.�M ;ð
 "8Ð!7¸Ô8HÑ!IÔ!I�JØ!+×!AÒ!AØ"-Ø"+Ø%,ð "Bñ "ô "�Jõ
 —K’KØTØØ#Ø"Ÿš z°1Ñ5Ô5ñ	ô ð øøõ ð Sð Sð SÝ—’ÐHÈ'ÑRÔRÐRÐRÐRÐRÐRÐRøøøøðSøøøð #×?Ò?À	È4ÑPÔPÐð !%× :Ò :¸4ÀÈHÑ UÔ UÐUÐUÐUÐUÐUÐUˆð (¨?×+>Ò+>¸wÑ+GÔ+GÐ+MÈ2ÑNˆ	Ý˜×+Ò+Ð,>Ñ?Ô?ÐEÀ2ÑFÔFˆ	ÝÐPÐP iÐPÑPÔPÑQÔQˆÝ!$ Q­¨C°¸kÈBÑ>NÑ1OÑ(PÔ(PÑ!QÔ!QÐð " BÒ&Ð&¨+¸ª/¨/Ø -ÐØ"ˆFØ"/ÐÐà 'ÐØ%ˆFØ"2Ðð —]’]Ð#5Ñ6Ô6ÐA¸'ˆ
ð Ð-Ò-Ð-ð ˆCà"Ð&<Ò<Ð<�"�"À"ð 	ð Ô'×4Ò4°VÑ<Ô<ÐBÀˆØ$×(Ò(¨Ñ9Ô9ˆØ"Ÿš Ñ7Ô7ð 
àð8Ø%2×%=Ò%=¸gÑ%FÔ%Fð8ˆMˆMà7�œ™œÔ)¨"¨1¨"Ô-×3Ò3Ñ5Ô5Ð7Ð7ð 	ð —M’MÐ"2Ñ3Ô3ˆ	ð ðˆD×(Ò(¨°HÑ=Ô=Ð=ð × Ò Ð!1Ñ2Ô2ð DØ×/Ò/°¸(ÑCÔCð 	ð �MŠMÐ+Ñ,Ô,ð Ø×ÒÐ 1Ñ2Ô2ðàð 	ð ðˆD×(Ò(¨°bÑ9Ô9Ð9àð 	ð �MŠM˜-Ñ(Ô(ð LØ×Ò Ñ.Ô.ðLàKð 	ð �MŠM˜.Ñ)Ô)ÐW¨\×-=Ò-=¸nÑ-MÔ-MÐWÐQWð 	ð —]’] <Ñ0Ô0ÐR°L×4DÒ4DÀ\Ñ4RÔ4Rˆ
ð%
Ø˜^ð%
à˜kð%
ð ˜iŸmšmÐ,<Ñ=Ô=ð Ø×ÒÐ 0Ñ1Ô1ðàð%
ð ˜YŸ]š]¨?Ñ;Ô;ð Ø×Ò Ñ0Ô0ðàð%
ð ˜
ð%
ð  
ð%
ð ! )§-¢-Ð0DÑ"EÔ"EÐ"SÈð%
ð ˜YŸ]š]¨?Ñ;Ô;ÐTÐ?Tð%
ð ˜Gð%
ð  	§¢Ð.@Ñ AÔ Að !4Ø×ÒÐ 2Ñ3Ô3ð%
ð  ˜6ð!%
ð"   Ð!7¨<ð#%
ð$ ˜9Ÿ=š=¨Ñ7Ô7ð /Ø×Ò Ñ.Ô.ð'%
ð( ˜*ð)%
ð* ˜ð+%
ð, ˜}ð-%
ð. " =ð/%
ð0 #,§-¢-Ð0DÑ"EÔ"Eð #6Ø×ÒÐ 4Ñ5Ô5Ø#,§=¢=Ð1FÑ#GÔ#Gð $Ø×ÒÐ 5Ñ6Ô6ð$àØ%0Ø$:Ø$-Ø#2×#6Ò#6Ð7LÑ#MÔ#Mð $6Ø5Ø!2ØØ#6ðI%
ð %
ð %
ˆðN	ØÔ×,Ò,¨V°^ÑDÔDÐDÝ�KŠKØPÐRXñô ð ð
 &×)Ò)¨/Ñ:Ô:ÐB¸dˆHØ×#Ò# LÑ1Ô1ð VØÐ.Ð.Ð.Ø! [×%6Ò%6Ñ%8Ô%8Ð8Ð8Ø ×!2Ò!2Ñ!4Ô!4Ð4Ð4å—’ØQØØñô ð ð
  Ô+×HÒHÈÑPÔP�Ý—’Ð;¸X¿\º\È)Ñ=TÔ=TÑUÔUÐUÐUÐUðVð Vð 5Ð4øõ ð 	ð 	ð 	Ý�LŠLØTØØñô ð ð ð ð ð ð ð øøøøð	øøøsh   ÂB> ÂB2Â&B> Â2B6Â6B> Â9B6Â:B> Â>
CÃ
CÄ-A6F$ Æ$
GÆ.GÇG×3C6[/ Û/
\ Û9\Ü\ N)
r   r   r   r   r	   r   r
   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r–   © r'   r%   r   r   
   s4   € € € € € ØKÐKðDð Dð Dð Dð Dð Dr'   r   )Ú
__future__r   Úloggingr[   rn   Ú	getLoggerrV   r   r›   r'   r%   ú<module>rŸ      s�   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€à	ˆÔ	Ð@Ñ	AÔ	A€ðGð Gð Gð Gð Gñ Gô Gð Gð Gð Gr'   