§
     ’j•&  ã                   óØ   — d dl Zd dlmc mZ d dlZd dlZd dlZd dl	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ  G d„ d	ej        ¦  «        Zed
k    r ej        ¦   «          dS dS )é    N)Ú	AsyncMockÚpatch)Ú
TestClient)ÚErpDatabaseClient)Úapp)ÚAuthService)ÚDocumentProcessingServicec                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	Ú#TestProjectAutoCreationFromDocumentc                 óø   — t          t          ¦  «        | _        t          ¦   «         | _        g | _        g | _        t          ¦   «         }|                     ddddddœ¦  «        | _	        dd| j	        › �i| _
        d S )	Nzadmin-id-testzadmin@dscons.vnÚ
superadminu   Tá»•ng GiÃ¡m Ä�á»‘cz$0753d827-90e1-4894-9c16-266ca572c5eb)ÚidÚemailÚroleÚ	full_nameÚ
company_idÚAuthorizationzBearer )r   r   Úclientr   ÚerpÚcreated_doc_idsÚcreated_project_codesr   Úcreate_jwt_tokenÚadmin_tokenÚheaders)ÚselfÚauths     úDC:\Projects\DSCons\tests\test_project_auto_creation_from_document.pyÚsetUpz)TestProjectAutoCreationFromDocument.setUp   s†   € Ý ¥‘o”oˆŒÝ$Ñ&Ô&ˆŒØ!ˆÔØ%'ˆÔ"õ ‰}Œ}ˆØ×0Ò0à%Ø*Ø$Ø2ØDðð ñ
ô 
ˆÔð (Ð)E°4Ô3CÐ)EÐ)EÐFˆŒˆˆó    c                 óv  — | j                              ¦   «         5 }|                     ¦   «         5 }| j        r|                     d| j        f¦  «         | j        r|                     d| j        f¦  «         |                     ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )Nz-DELETE FROM erp_documents WHERE id = ANY(%s);z2DELETE FROM projects WHERE project_code = ANY(%s);)r   Úget_connectionÚcursorr   Úexecuter   Úcommit)r   ÚconnÚcurs      r   ÚtearDownz,TestProjectAutoCreationFromDocument.tearDown"   sB  € àŒX×$Ò$Ñ&Ô&ð 	¨$Ø—’‘”ð  #ØÔ'ð Ø—K’KØGØÔ-Ð/ñô ð ð Ô-ð Ø—K’KØLØÔ3Ð5ñô ð ð —’‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s5   šB.¯ABÂ
B.ÂB	ÂB.ÂB	ÂB.Â.B2Â5B2c                 ó$  — dt          j        ¦   «         j        dd…                              ¦   «         › �}| j                             |¦  «         |dddddd	d
ddddœ}| j                             |¦  «        }|                      |¦  «         |  	                    |d         |¦  «         |  	                    |d         d¦  «         | j         
                    |¦  «        }|                      |¦  «         |  	                    |d         d¦  «         dS )uA   Kiá»ƒm tra táº¡o má»›i vÃ  truy váº¥n dá»± Ã¡n báº±ng erp_client.zDA-TEST-Né   u+   Dá»± Ã¡n Náº¡o vÃ©t sÃ´ng vÃ  xÃ¢y kÃ¨ testu   Ban Quáº£n LÃ½ Dá»± Ã�n Testu   Kiáº¿n Thá»¥y, Háº£i PhÃ²ngõ   Thá»§y lá»£iÚbiddingÚhighi€Ñðé´   u   Trá»�n gÃ³iu   Kiá»ƒm thá»­ tá»± Ä‘á»™ng)Úproject_codeÚproject_nameÚclient_nameÚlocationÚproject_typeÚstatusÚpriorityÚbudget_amountÚcontract_duration_daysÚcontract_typeÚnotesr.   r3   r/   )ÚuuidÚuuid4ÚhexÚupperr   Úappendr   Úcreate_projectÚassertIsNotNoneÚassertEqualÚget_project)r   Úunique_codeÚpayloadÚprojÚfetcheds        r   Ú&test_create_and_get_project_db_methodszJTestProjectAutoCreationFromDocument.test_create_and_get_project_db_methods2   s   € à?¥¤¡¤Ô!1°"°1°"Ô!5×!;Ò!;Ñ!=Ô!=Ð?Ð?ˆØÔ"×)Ò)¨+Ñ6Ô6Ð6ð (ØIØ9Ø5Ø*ØØØ&Ø&)Ø*Ø0ð
ð 
ˆð Œx×&Ò& wÑ/Ô/ˆØ×Ò˜TÑ"Ô"Ð"Ø×Ò˜˜nÔ-¨{Ñ;Ô;Ð;Ø×Ò˜˜hœ¨Ñ3Ô3Ð3ð ”(×&Ò& {Ñ3Ô3ˆØ×Ò˜WÑ%Ô%Ð%Ø×Ò˜ Ô0Ð2_Ñ`Ô`Ð`Ð`Ð`r   c           	      ó€  — dt          j        ¦   «         j        dd…                              ¦   «         › �}|ddddddd	d
œ}| j                             |¦  «        }t          |d         ¦  «        }| j                             |¦  «         | j         	                    |¦  «        }|  
                    |d         ¦  «         |                      |d         ¦  «         |d         }| j                             |d         ¦  «         |                      d|d                              ¦   «         ¦  «         |                      |d         d¦  «         | j                             |¦  «        }|                      t          |d         ¦  «        t          |d         ¦  «        ¦  «         |                      |d         d¦  «         dS )u^   Kiá»ƒm tra khá»Ÿi táº¡o dá»± Ã¡n tá»± Ä‘á»™ng tá»« vÄƒn báº£n TBMT vÃ  liÃªn káº¿t project_id.ÚIBNé   uS   ThÃ´ng bÃ¡o má»�i tháº§u - GÃ³i tháº§u sá»‘ 05: XÃ¢y dá»±ng cá»‘ng há»™p kÃªnh testÚlegalÚTBu   UBND XÃ£ TestuD   ThÃ´ng bÃ¡o má»�i tháº§u thi cÃ´ng xÃ¢y láº¯p trá»�n gÃ³i 270 ngÃ y.Úpending_review)Údocument_codeÚdocument_titleÚdocument_groupÚdocument_typeÚissuer_nameÚpartner_nameÚsummary_contentr3   r   Úcreated_newÚ
project_idÚprojectr.   u   cá»‘ng há»™pr/   r3   r+   Úproject_stageÚstage_01_initiation)r9   r:   r;   r<   r   Úcreate_documentÚstrr   r=   Úcreate_project_from_documentÚ
assertTruer?   r   ÚassertInÚlowerr@   Úget_document)r   Údoc_codeÚdoc_payloadÚdocÚdoc_idÚresÚcreated_projÚupdated_docs           r   Ú(test_create_project_from_document_directzLTestProjectAutoCreationFromDocument.test_create_project_from_document_directO   s£  € à6�œ
™œÔ(¨¨!¨Ô,×2Ò2Ñ4Ô4Ð6Ð6ˆà%ØsØ%Ø!Ø*Ø+ØeØ&ð	
ð 	
ˆð Œh×&Ò& {Ñ3Ô3ˆÝ�S˜”Y‘”ˆØÔ×#Ò# FÑ+Ô+Ð+ð Œh×3Ò3°FÑ;Ô;ˆØ�Š˜˜MÔ*Ñ+Ô+Ð+Ø×Ò˜S Ô.Ñ/Ô/Ð/à˜9”~ˆØÔ"×)Ò)¨,°~Ô*FÑGÔGÐGØ�Š�n l°>Ô&B×&HÒ&HÑ&JÔ&JÑKÔKÐKØ×Ò˜ hÔ/°Ñ;Ô;Ð;ð ”h×+Ò+¨FÑ3Ô3ˆØ×Ò�˜[¨Ô6Ñ7Ô7½¸\È$Ô=OÑ9PÔ9PÑQÔQÐQØ×Ò˜ _Ô5Ð7LÑMÔMÐMÐMÐMr   c           	      ó²  — dt          j        ¦   «         j        dd…                              ¦   «         › �}| j                             |dddddœ¦  «        }t          |d	         ¦  «        }| j                             |¦  «         d
dt          j        ¦   «         j        dd…                              ¦   «         › �dddddddœ}| j	                             |d         ¦  «         | j
                             d|› d�|| j        ¬¦  «        }|                      |j        d¦  «         |                     ¦   «         }|                      |d         ¦  «         |                      |d         d         |d         ¦  «         | j                             |¦  «        }|                      t          |d         ¦  «        t          |d         d	         ¦  «        ¦  «         dS )uB   Kiá»ƒm thá»­ API POST /v1/erp/documents/{doc_id}/initiate-project.zTB-Nr)   uL   ThÃ´ng bÃ¡o má»�i tháº§u Dá»± Ã¡n Ä�Æ°á»�ng giao thÃ´ng nÃ´ng thÃ´n xÃ£ TestrJ   rK   rL   )rM   rN   rO   rP   r3   r   u3   Dá»± Ã¡n Ä�Æ°á»�ng giao thÃ´ng nÃ´ng thÃ´n xÃ£ TestzDA-TEST-ROAD-é   u   Giao thÃ´ngu   UBND Huyá»‡n Testu   Háº£i PhÃ²ngéx   r+   u&   Háº¡n ná»™p há»“ sÆ¡ e-HSDT 15/09/2026)r/   r.   r2   r0   r1   r6   r3   r8   r.   z/v1/erp/documents/z/initiate-project)Újsonr   éÈ   rT   rV   rU   )r9   r:   r;   r<   r   rY   rZ   r   r=   r   r   Úpostr   r@   Ústatus_coderk   r\   r_   )r   r`   rb   rc   Úcustom_payloadÚresponseÚdataÚ	doc_checks           r   Ú'test_api_initiate_project_from_documentzKTestProjectAutoCreationFromDocument.test_api_initiate_project_from_documento   sÝ  € à7�œ™œÔ)¨"¨1¨"Ô-×3Ò3Ñ5Ô5Ð7Ð7ˆØŒh×&Ò&à!)Ø"pØ")Ø!%Ø*ðð ñ
ô 
ˆõ �S˜”Y‘”ˆØÔ×#Ò# FÑ+Ô+Ð+ð RØJ­D¬J©L¬LÔ,<¸R¸a¸RÔ,@×,FÒ,FÑ,HÔ,HÐJÐJØ)Ø.Ø&Ø&)ØØ=ð	
ð 	
ˆð 	Ô"×)Ò)¨.¸Ô*HÑIÔIÐIà”;×#Ò#Ø: Ð:Ð:Ð:ØØ”Lð $ñ 
ô 
ˆð
 	×Ò˜Ô-¨sÑ3Ô3Ð3Ø�}Š}‰ŒˆØ�Š˜˜]Ô+Ñ,Ô,Ð,Ø×ÒØ�ŒO˜NÔ+¨^¸NÔ-Kñ	
ô 	
ð 	
ð
 ”H×)Ò)¨&Ñ1Ô1ˆ	Ø×Ò�˜Y |Ô4Ñ5Ô5µs¸4À	¼?È4Ô;PÑ7QÔ7QÑRÔRÐRÐRÐRr   c                 óà  ‡— dt          j        ¦   «         j        dd…                              ¦   «         › �Š| j                             ‰¦  «         | j                             ‰ddddœ¦  «         | j         	                    d| j
        ¬	¦  «        }|                      |j        d
¦  «         |                     ¦   «         }|                      t          ˆfd„|D ¦   «         ¦  «        ¦  «         dS )uD   Kiá»ƒm thá»­ API GET /v1/erp/projects kÃ¨m bá»™ lá»�c tráº¡ng thÃ¡i.zDA-BID-Nr)   u   Dá»± Ã¡n Ä�ang Bidding Testr+   r*   )r.   r/   r3   r2   z/v1/erp/projects?status=bidding)r   rl   c              3   ó0   •K  — | ]}|d          ‰k    V — ŒdS )r.   N© )Ú.0ÚprB   s     €r   ú	<genexpr>z`TestProjectAutoCreationFromDocument.test_api_list_projects_with_status_filter.<locals>.<genexpr>¬   s-   øè è € ÐLÐLÀ˜A˜nÔ-°Ò<ÐLÐLÐLÐLÐLÐLr   )r9   r:   r;   r<   r   r=   r   r>   r   Úgetr   r@   rn   rk   r\   Úany)r   Úres_biddingÚitemsrB   s      @r   Ú)test_api_list_projects_with_status_filterzMTestProjectAutoCreationFromDocument.test_api_list_projects_with_status_filterš   sù   ø€ à>¥¤
¡¤Ô 0°°!°Ô 4× :Ò :Ñ <Ô <Ð>Ð>ˆØÔ"×)Ò)¨+Ñ6Ô6Ð6ØŒ×Òà +Ø =Ø#Ø .ð	ð ñ	
ô 	
ð 	
ð ”k—o’oØ-°t´|ð &ñ 
ô 
ˆð 	×Ò˜Ô0°#Ñ6Ô6Ð6Ø× Ò Ñ"Ô"ˆØ�Š�ÐLÐLÐLÐLÀeÐLÑLÔLÑLÔLÑMÔMÐMÐMÐMr   c                 ó”  — | j                              dt          j        ¦   «         j        dd…                              ¦   «         › �dddœ¦  «        }t          |d         ¦  «        }| j                             |¦  «         t          ¦   «         }dt          j        ¦   «         j        dd…                              ¦   «         › �dd	d
ddddddœ	}t          j        |dd¬¦  «        5  t          j        |dt          |¬¦  «        ¬¦  «        5  t          j        |dt          dg ddœ¬¦  «        ¬¦  «        5  t          j        |                     |ddd¬¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   | j                              |¦  «        }|                      |d         ¦  «         | j                              t          |d         ¦  «        ¦  «        }|r>| j                             |d         ¦  «         |                      |d          d!¦  «         dS dS )"u]   Kiá»ƒm tra Pipeline AI tá»± Ä‘á»™ng khá»Ÿi táº¡o dá»± Ã¡n khi gáº·p ThÃ´ng BÃ¡o Má»�i Tháº§u.rH   Nr)   u   VÄƒn báº£n chá»� bÃ³c tÃ¡chÚ
processing)rM   rN   r3   r   uN   ThÃ´ng bÃ¡o má»�i tháº§u - GÃ³i tháº§u sá»‘ 01: Thi cÃ´ng cá»‘ng ngÄƒn triá»�urJ   rK   Úfully_executedÚincomingu   CÃ´ng ty Thá»§y Lá»£i TestuP   ThÃ´ng bÃ¡o má»�i tháº§u qua máº¡ng gÃ³i tháº§u xÃ¢y láº¯p cá»‘ng ngÄƒn triá»�u.z
2026-08-24)	rM   rN   rO   rP   Úsignature_statusÚdocument_directionrQ   rS   Ú
issue_dateÚextract_textu&   Ná»™i dung thÃ´ng bÃ¡o má»�i tháº§u...)Úreturn_valueÚanalyze_with_ai)ÚnewÚrun_cross_agent_auditéZ   u   Khá»›p hoÃ n toÃ n)Úconfidence_scoreÚflagsÚcross_audit_summaryz	dummy.pdfzTBMT_Cong_Ngan_Trieu.pdfÚpdf)rc   Úfile_path_strÚfilenameÚfile_formatrU   r.   r3   r+   )r   rY   r9   r:   r;   r<   rZ   r   r=   r	   r   Úobjectr   ÚasyncioÚrunÚrun_pipeliner_   r?   rA   r   r@   )r   rb   rc   ÚsvcÚmock_ai_resultrf   Úlinked_projs          r   Ú7test_run_pipeline_auto_initiates_project_for_tender_docz[TestProjectAutoCreationFromDocument.test_run_pipeline_auto_initiates_project_for_tender_doc®   sB  € àŒh×&Ò&à!D¥d¤j¡l¤lÔ&6°r¸°rÔ&:×&@Ò&@Ñ&BÔ&BÐ!DÐ!DØ"?Ø&ðð ñ
ô 
ˆõ �S˜”Y‘”ˆØÔ×#Ò# FÑ+Ô+Ð+å'Ñ)Ô)ˆð A¥$¤*¡,¤,Ô"2°2°A°2Ô"6×"<Ò"<Ñ">Ô">Ð@Ð@ØnØ%Ø!Ø 0Ø",Ø7ØqØ&ð

ð 

ˆõ ŒLØ�^Ð2Zðñ ô ð	ð 	õ ŒLØÐ&­IÀ>Ð,RÑ,RÔ,Rðñ ô ð		ð 	õ ŒLØØ'Ýà,.Ø!#Ø/Cð"ð "ðñ ô ð
ñ 
ô 
ð	ð 	õ& ŒKØ× Ò Ø!Ø"-Ø7Ø %ð	 !ñ ô ñô ð ð'	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð8 ”h×+Ò+¨FÑ3Ô3ˆØ×Ò˜[¨Ô6Ñ7Ô7Ð7ð ”h×*Ò*­3¨{¸<Ô/HÑ+IÔ+IÑJÔJˆØð 	?ØÔ&×-Ò-¨k¸.Ô.IÑJÔJÐJØ×Ò˜[¨Ô2°IÑ>Ô>Ð>Ð>Ð>ð	?ð 	?sZ   Ã%&FÄ*FÄ5,E-Å!FÅ-E1Å1FÅ4E1Å5FÅ8FÆF	ÆFÆF	ÆFÆFÆ"FN)
Ú__name__Ú
__module__Ú__qualname__r   r'   rF   rg   rs   r~   rš   rv   r   r   r   r      sŽ   € € € € € ðGð Gð Gð&ð ð ð að að að:Nð Nð Nð@)Sð )Sð )SðVNð Nð Nð(>?ð >?ð >?ð >?ð >?r   r   Ú__main__)ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arr”   Úunittestr9   Úunittest.mockr   r   Úfastapi.testclientr   Úapp.core.postgres.erp_clientr   Úapp.mainr   Ú)app.modules.auth.application.auth_servicer   Ú8app.modules.core.application.document_processing_servicer	   ÚTestCaser   r›   Úmainrv   r   r   ú<module>r®      s  ðØ  € € € € € € € € € € € € €€€€Ø €€€Ø €€€Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à )Ð )Ð )Ð )Ð )Ð )à :Ð :Ð :Ð :Ð :Ð :Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AØ ^Ð ^Ð ^Ð ^Ð ^Ð ^ð^?ð ^?ð ^?ð ^?ð ^?¨(Ô*;ñ ^?ô ^?ð ^?ðB ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   