§
     ’jö  ã                   ó¼   — d Z ddlZddlmc mZ ddl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 )z_Automated test suite for Advanced BIM 4D/5D, EVM S-Curve Analytics, and Autonomous AI Features.é    N)Ú
TestClient)Úget_current_user)Ú
create_app)ÚAISiteDiaryService)ÚEvmCalculationServicec                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestAdvancedBimEvmAiFeaturesc                 óª   — t          ¦   «         | _        t          | j        ¦  «        | _        t	          ¦   «         | _        t          ¦   «         | _        d S ©N)r   Úappr   Úclientr   Úevm_servicer   Ú
ai_service©Úselfs    ú4C:\Projects\DSCons\tests\test_advanced_bim_evm_ai.pyÚsetUpz"TestAdvancedBimEvmAiFeatures.setUp   s=   € Ý‘<”<ˆŒÝ  ¤Ñ*Ô*ˆŒÝ0Ñ2Ô2ˆÔÝ,Ñ.Ô.ˆŒˆˆó    c                 ó   — i | j         _        d S r   )r   Údependency_overridesr   s    r   ÚtearDownz%TestAdvancedBimEvmAiFeatures.tearDown   s   € Ø(*ˆŒÔ%Ð%Ð%r   c                 óØ  — | j                              d¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      t          |d         ¦  «        d¦  «         |                      |d         d¦  «         |                      |d         d¦  «         d	S )
uJ   Kiá»ƒm thá»­ engine EVM tÃ­nh toÃ¡n CPI, SPI, EAC vÃ  sá»‘ liá»‡u S-Curve.úDA-DADO-PHULIEN-2026ÚerrorÚcpiÚspiÚestimate_at_completion_eacÚs_curve_pointsé   r   N)r   Úget_project_evm_analyticsÚassertNotInÚassertInÚassertEqualÚlenÚassertGreater)r   Úevms     r   Útest_evm_service_calculationz9TestAdvancedBimEvmAiFeatures.test_evm_service_calculation   sß   € àÔ×8Ò8Ð9OÑPÔPˆØ×Ò˜ #Ñ&Ô&Ð&Ø�Š�e˜SÑ!Ô!Ð!Ø�Š�e˜SÑ!Ô!Ð!Ø�ŠÐ2°CÑ8Ô8Ð8Ø�ŠÐ&¨Ñ,Ô,Ð,Ø×Ò�˜SÐ!1Ô2Ñ3Ô3°QÑ7Ô7Ð7Ø×Ò˜3˜uœ: qÑ)Ô)Ð)Ø×Ò˜3˜uœ: qÑ)Ô)Ð)Ð)Ð)r   c                 óZ  — d}| j                              d|¬¦  «        }|                      |d         d¦  «         |                      |d         d¦  «         |                      |d         d	¦  «         |                      d
|d         ¦  «         |                      |d         d¦  «         dS )uW   Kiá»ƒm thá»­ AI bÃ³c tÃ¡ch giá»�ng nÃ³i/transcript thÃ nh phiáº¿u nháº­t kÃ½ thi cÃ´ng.uì   HÃ´m nay ngÃ y 21 thÃ¡ng 8 cÃ´ng trÆ°á»�ng tráº¡m bÆ¡m Nam HÆ°ng náº¯ng rÃ¡o ba mÆ°Æ¡i tÆ° cÃ´ng nhÃ¢n bá»‘n ca mÃ¡y Ä‘Ã o Ä‘áº¥t há»‘ mÃ³ng vÃ  gia cÃ´ng cá»‘t thÃ©p Ä‘Ã i mÃ³ng Ä�M1 láº¥y ba tá»• máº«u bÃª tÃ´ng R28 Ä‘áº¡t yÃªu cáº§u.z$00000000-0000-0000-0000-000000000001)Ú
project_idÚtranscript_textÚstatusÚsuccessÚworkforce_counté"   Úmachine_counté   u   Náº¯ngÚweather_conditionÚextracted_activities_counté   N)r   Úprocess_voice_to_diaryr#   r"   ÚassertGreaterEqual)r   Ú
transcriptÚdiarys      r   Útest_voice_to_site_diary_parserz<TestAdvancedBimEvmAiFeatures.test_voice_to_site_diary_parser#   sÀ   € ðTð 	ð ”×6Ò6Ø=Ø&ð 7ñ 
ô 
ˆð 	×Ò˜˜xœ¨)Ñ4Ô4Ð4Ø×Ò˜Ð0Ô1°2Ñ6Ô6Ð6Ø×Ò˜˜Ô/°Ñ3Ô3Ð3Ø�Š�h Ð&9Ô :Ñ;Ô;Ð;Ø×Ò Ð&BÔ CÀQÑGÔGÐGÐGÐGr   c                 ó,  — | j                              dd¬¦  «        }|                      |d         d¦  «         |                      d|¦  «         |                      |d         d¦  «         |                      t	          |d	         ¦  «        d
¦  «         dS )uc   Kiá»ƒm thá»­ AI tá»± Ä‘á»™ng gom vÃ  sinh bá»™ há»“ sÆ¡ nghiá»‡m thu thanh toÃ¡n IPC chuáº©n FIDIC.r   é   )Ú
ipc_numberr+   Ú	assembledÚfinancial_summaryÚipc_clearance_statusÚSAN_SANG_GIAI_NGANÚattached_dossier_checklistsé   N)r   Úassemble_fidic_ipc_dossierr#   r"   r$   )r   Úipcs     r   Útest_fidic_ipc_dossier_assemblyz<TestAdvancedBimEvmAiFeatures.test_fidic_ipc_dossier_assembly3   s›   € àŒo×8Ò8Ø"¨qð 9ñ 
ô 
ˆð 	×Ò˜˜Xœ¨Ñ4Ô4Ð4Ø�ŠÐ)¨3Ñ/Ô/Ð/Ø×Ò˜Ð3Ô4Ð6JÑKÔKÐKØ×Ò�˜SÐ!>Ô?Ñ@Ô@À!ÑDÔDÐDÐDÐDr   c                 ó€  — d„ | j         j        t          <   | j                             d¦  «        }|                      |j        d¦  «         |                     ¦   «         }|                      |t          ¦  «         |  
                    t          |¦  «        d¦  «         | j                             d¦  «        }|                      |j        d¦  «         |                     ¦   «         }|                      d|¦  «         |                      d|¦  «         | j                             dd	d
i¬¦  «        }|                      |j        d¦  «         |                      |                     ¦   «         d         d¦  «         | j                             d¦  «        }|                      |j        d¦  «         |                      |                     ¦   «         d         d¦  «         | j                             d¦  «        }|                      |j        d¦  «         |                      |                     ¦   «         t          ¦  «         dS )u<   Kiá»ƒm thá»­ cÃ¡c REST endpoints cá»§a phÃ¢n há»‡ nÃ¢ng cao.c                  ó   — ddddœS )Nzadmin-idzadmin@dscons.vnÚ
superadmin)ÚidÚemailÚrole© rK   r   r   ú<lambda>zGTestAdvancedBimEvmAiFeatures.test_advanced_api_routes.<locals>.<lambda>?   s   € ØØ&Ø ðC
ð C
€ r   z;/v1/erp/advanced/projects/DA-DADO-PHULIEN-2026/bim-elementséÈ   é   z</v1/erp/advanced/projects/DA-DADO-PHULIEN-2026/evm-analyticsr   r   zO/v1/erp/advanced/projects/00000000-0000-0000-0000-000000000001/voice-site-diaryr*   uU   Trá»�i náº¯ng 32 Ä‘á»™, 20 thá»£ Ä‘á»• bÃª tÃ´ng mÃ³ng vÃ  thá»­ Ã¡p lá»±c á»‘ng HDPE)Újsonr+   r,   zC/v1/erp/advanced/projects/DA-DADO-PHULIEN-2026/generate-ipc-dossierr>   r?   z$/v1/erp/advanced/early-warning-radarN)r   r   r   r   Úgetr#   Ústatus_coderO   ÚassertIsInstanceÚlistr5   r$   r"   Úpost)r   Úres_bimÚbim_elementsÚres_evmÚevm_dataÚ	res_voiceÚres_ipcÚ	res_radars           r   Útest_advanced_api_routesz5TestAdvancedBimEvmAiFeatures.test_advanced_api_routes=   s  € ð;
ð ;
ˆŒÔ%Õ&6Ñ7ð ”+—/’/ØIñ
ô 
ˆð 	×Ò˜Ô,¨cÑ2Ô2Ð2Ø—|’|‘~”~ˆØ×Ò˜l­DÑ1Ô1Ð1Ø×Ò¥ LÑ 1Ô 1°1Ñ5Ô5Ð5ð ”+—/’/ØJñ
ô 
ˆð 	×Ò˜Ô,¨cÑ2Ô2Ð2Ø—<’<‘>”>ˆØ�Š�e˜XÑ&Ô&Ð&Ø�ŠÐ&¨Ñ1Ô1Ð1ð ”K×$Ò$Ø]à!Ð#zðð %ñ 
ô 
ˆ	ð 	×Ò˜Ô.°Ñ4Ô4Ð4Ø×Ò˜ŸšÑ)Ô)¨(Ô3°YÑ?Ô?Ð?ð ”+×"Ò"ØQñ
ô 
ˆð 	×Ò˜Ô,¨cÑ2Ô2Ð2Ø×Ò˜Ÿš™œÐ(>Ô?ÐAUÑVÔVÐVð ”K—O’OÐ$JÑKÔKˆ	Ø×Ò˜Ô.°Ñ4Ô4Ð4Ø×Ò˜iŸnšnÑ.Ô.µÑ5Ô5Ð5Ð5Ð5r   N)	Ú__name__Ú
__module__Ú__qualname__r   r   r'   r8   rD   r\   rK   r   r   r	   r	      st   € € € € € ð/ð /ð /ð+ð +ð +ð
*ð 
*ð 
*ðHð Hð Hð Eð Eð Eð.6ð .6ð .6ð .6ð .6r   r	   Ú__main__)Ú__doc__ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arÚunittestÚfastapi.testclientr   Ú"app.modules.auth.presentation.authr   Úapp.mainr   Ú8app.modules.operations.application.ai_site_diary_servicer   Ú9app.modules.financial.application.evm_calculation_servicer   ÚTestCaser	   r]   ÚmainrK   r   r   ú<module>rp      sä   ðØ eÐ eà  € € € € € € € € € € € € €€€€à )Ð )Ð )Ð )Ð )Ð )à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø Ð Ð Ð Ð Ð Ø WÐ WÐ WÐ WÐ WÐ WØ [Ð [Ð [Ð [Ð [Ð [ð^6ð ^6ð ^6ð ^6ð ^6 8Ô#4ñ ^6ô ^6ð ^6ðB ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   