§
    a´Àj·   ã                   óŒ   — d dl Z d dlZd dlmZ d dlmZ  ej        e¦  «        Z	 dde	de	dz  de
de	de	d	ed
ee	ef         fd„ZdS )é    N)ÚPath)ÚAnyÚfilenameÚhsmt_ref_fileÚconfidence_scoreÚconfidence_levelÚai_report_msgÚ
erp_clientÚreturnc                 ó²  — t          d¦  «        }g }|                     ¦   «         �r\	 t          |dd¬¦  «        5 }t          j        |¦  «        }	ddd¦  «         n# 1 swxY w Y   t          |	¦  «        D �]×\  }
}|                     dd¦  «        }|                     ¦   «         }d}d	|v sd
|v rd}nYd|v sd|v rd}nNd|v rd}nGd|v sd|v sd|v sd|v sd|v rd}n0d|v sd|v rd}n%d|v sd|v sd|v sd|v rd}nd|v sd |v sd!|v sd"|v rd#}|
d$k     rd%n|
d&k     rd'n	|
d(k     rd)nd*}|
d$z  d+z   }d|v sd|v r	d,d-|
z   d.›�n*d|v sd|v r	d/d0|
z   d.›�nd	|v sd|v r	d1d-|
z   d.›�nd2d-|
z   d.›�}t          |                     d3¦  «        pd4¦  «        }t          |                     d5¦  «        pd4¦  «        }t          |                     d6¦  «        pt          ||z  ¦  «        ¦  «        }|                     d7d8¦  «        pd8}| 
                    |
d+z   |› d9|› �|||d:|› d;|› d<�||||d=|dd>…                              d;d?¦  «        › �d@œ¦  «         �ŒÙn4# t          $ r'}t                               dA|› �¦  «         Y d}~nd}~ww xY w|sCd+dBdCdDddEd8dFdGdHdId@œdJdKdLdMddNd8dOdPdQdRd@œdSdTdUdVddWd8dXdYdZd[d@œd\d]d^d_dd`dadbdcddded@œdfdgdhdiddjdkdldmdndod@œg}t          dp„ |D ¦   «         ¦  «        }t!          |¦  «        }|dfk    rdq}dr}ds|› dt�}du|› dv�}ndw}dx}dy|› dz|d{›d|�}d}|› d~�}|                      d¦  «        s|                      d€¦  «        r| nd| › �d�d‚dƒ||||pd||d„œ
S )…zXLoad authentic 71-item takeoff for Kenh Ong Den / Hydraulic Revetment project (HD-2026).u9   HÄ�-2026/KÃªnh Ã”ng Ä�Ã¨n/takeoff_items_priced_final.jsonÚrzutf-8)ÚencodingNÚ	item_nameÚ Úcivilu	   bÃª tÃ´ngu   bt lÃ³tÚconcreteu   cá»‘t thÃ©pu   thÃ©pÚrebaru   vÃ¡n khuÃ´nÚformworku   Ä‘Ã ou   Ä‘áº¯pu   bÃ¹nu   váº­n chuyá»ƒnu   phÃ¡t quangÚ	earthworku   cá»�cu   cá»«Ú
foundationu   xÃ¢yu   trÃ¡tu   lÃ¡ngu   láº¯pÚmasonryu   há»‡ thá»‘ngu
   nhÃ  táº¡mu   Ä‘Æ°á»�ng cÃ´ng vá»¥u
   hÃ ng rÃ oÚ	auxiliaryé   Ú1é   Ú2é2   Ú3Ú4é   zAB.i'  Ú05dzAC.i N  zAF.zAA.Úquantityr   Ú
unit_priceÚtotalÚunitÚm3ú.u4   Theo há»“ sÆ¡ thiáº¿t káº¿ & HSMT KÃªnh Ã”ng Ä�Ã¨n (ú ú)z'/dashboard/material-price-comparison?q=é   ú+)Ú
item_orderÚwbs_codeÚ	norm_coder   ÚcategoryÚdimension_formular%   r"   Úunit_price_vndÚtotal_amount_vndÚprice_source_urlu7   [TAKEOFF] Lá»—i náº¡p takeoff_items_priced_final.json: z1.1zAB.11110u@   Ä�Ã o bÃ¹n Ä‘áº¥t bá»� kÃ¨ báº±ng mÃ¡y Ä‘Ã o gáº§u ngoáº¡m 0.8m3z500.0 * 4.5 * 1.8g     ¤¯@iÈ¯  iêÜ
z./dashboard/material-price-comparison?q=dao-buné   z1.2zAF.11110u,   BÃª tÃ´ng lÃ³t Ä‘Ã¡y mÃ³ng Ä‘Ã¡ 4x6 mÃ¡c 100z500.0 * 2.0 * 0.1g      Y@ið~ iÀ•©z2/dashboard/material-price-comparison?q=be-tong-loté   z1.3zAF.21110u%   BÃª tÃ´ng thÃ¢n kÃ¨ mÃ¡c 300 Ä‘Ã¡ 1x2z500.0 * 1.5 * 0.4g     Àr@i  iÀ’íz6/dashboard/material-price-comparison?q=be-tong-than-keé   z1.4zAF.61110u%   Cá»‘t thÃ©p CB300-V D<=18mm thÃ¢n kÃ¨z300.0 * 0.08u   táº¥ng      8@i Åû i {šz//dashboard/material-price-comparison?q=cot-thepé   z1.5zAF.81110u)   VÃ¡n khuÃ´n thÃ©p Ä‘á»‹nh hÃ¬nh thÃ¢n kÃ¨z500.0 * 1.5 * 2Úm2g     p—@i¨Ò i`PŠz0/dashboard/material-price-comparison?q=van-khuonc              3   ó\   K  — | ]'}t          |                     d d¦  «        ¦  «        V — Œ(dS )r2   r   N)ÚfloatÚget)Ú.0Úits     úPC:\Projects\DSCons\app\modules\takeoff\application\vision_fallbacks_revetment.pyú	<genexpr>z1get_revetment_takeoff_fallback.<locals>.<genexpr>­   s9   è è € ÐMÐM¸B•5˜ŸšÐ 2°AÑ6Ô6Ñ7Ô7ÐMÐMÐMÐMÐMÐMó    é-   Úheuristic_fallbacku;   BÃ³c tÃ¡ch Æ°á»›c tÃ­nh theo máº«u bá»� kÃ¨ Ä‘á»‹nh hÃ¬nh (uƒ    háº¡ng má»¥c cÆ¡ sá»Ÿ). Báº£n váº½ chÆ°a cÃ³ dá»¯ liá»‡u vector CAD hoáº·c HSMT e-GP Ä‘Ã­nh kÃ¨m Ä‘á»ƒ trÃ­ch xuáº¥t tá»± Ä‘á»™ng.u2   AI Quá»³nh QS: Khá»Ÿi táº¡o Æ°á»›c tÃ­nh sÆ¡ bá»™ uL    háº¡ng má»¥c. Cáº§n bá»• sung file HSMT e-GP Ä‘á»ƒ chuáº©n hÃ³a danh má»¥c.éP   Údossier_parsedu   Ä�Ã£ trÃ­ch xuáº¥t uZ    háº¡ng má»¥c cÃ´ng tÃ¡c tá»« há»“ sÆ¡ KÃªnh Ã”ng Ä�Ã¨n. Tá»•ng dá»± toÃ¡n trá»±c tiáº¿p: z,.0fu    VNÄ�.u*   AI Quá»³nh QS: TrÃ­ch xuáº¥t thÃ nh cÃ´ng u(    háº¡ng má»¥c tá»« há»“ sÆ¡ thá»±c táº¿.zDWG-ÚDWG_u-   Dá»± Ã¡n Cá»‘ng & KÃªnh Ã”ng Ä�Ã¨n (HÄ�-2026)Úhydraulic_culvertz1:200)
Údrawing_codeÚdrawing_titleÚdrawing_typeÚdrawing_scaleÚai_analysis_notesr   r   Úhsmt_reference_fileÚai_report_messageÚitems)r   ÚexistsÚopenÚjsonÚloadÚ	enumerater;   Úlowerr:   ÚroundÚappendÚreplaceÚ	ExceptionÚloggerÚerrorÚsumÚlenÚ
startswith)r   r   r   r   r	   r
   Ú	json_pathÚ
items_listÚfÚ	raw_itemsÚidxr=   ÚnameÚnlÚcatÚ
wbs_prefixÚwbs_subr.   ÚqtyÚu_priceÚtotÚunit_strÚeÚtot_calcÚ
item_countÚ
conf_scoreÚconf_lvlÚmsgÚnotess                                r>   Úget_revetment_takeoff_fallbackrs   	   sJ  € õ ÐPÑQÔQ€Ià€JØ×ÒÑÔñ NXðM	XÝ�i ¨wÐ7Ñ7Ô7ð )¸1Ý œI a™LœL�	ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )õ % YÑ/Ô/ð Gñ G‘��RØ—v’v˜k¨2Ñ.Ô.�Ø—Z’Z‘\”\�à�Ø "Ð$Ð$¨	°R¨¨Ø$�C�CØ" bÐ(Ð(¨G°r¨M¨MØ!�C�CØ" bÐ(Ð(Ø$�C�Cà˜r�M�MØ 2�~�~Ø �|�|Ø'¨2Ð-Ð-Ø$¨Ð*Ð*à%�C�CØ �]�] f° l lØ&�C�CØ˜r�\�\ W° ] ]°gÀ°m°mÀwÐRTÀ}À}Ø#�C�Cà" bÐ(Ð(Ø# rÐ)Ð)Ø-°Ð3Ð3Ø# rÐ)Ð)à%�Cð ˜R’x�xð �Cà!$ r¢ ˜#˜#°s¸R²x°x°°ÀSð ð
  ™8 q™.�ð  "�}�}¨°"¨¨ð ,˜% #™+Ð+Ð+Ð+Ð+ð # b˜=˜=¨F°b¨L¨Lð 0˜e c™kÐ/Ð/Ð/Ð/ð  +¨bÐ0Ð0°G¸r°M°Mð 4 %¨#¡+Ð3Ð3Ð3Ð3à!8 u¨s¡{Ð!8Ð!8Ð!8ð õ ˜BŸFšF :Ñ.Ô.Ð3°!Ñ4Ô4�Ý §¢ |Ñ 4Ô 4Ð 9¸Ñ:Ô:�Ý˜BŸFšF 7™OœOÐC­u°S¸7±]Ñ/CÔ/CÑDÔD�ØŸ6š6 &¨$Ñ/Ô/Ð7°4�à×!Ò!à&)¨A¡gØ'1Ð$=Ð$=°GÐ$=Ð$=Ø%.Ø%)Ø$'Ø-uÐdgÐ-uÐ-uÐjrÐ-uÐ-uÐ-uØ (Ø$'Ø*1Ø,/Ø,sÐVZÐ[^Ð\^Ð[^ÔV_×VgÒVgÐhkÐmpÑVqÔVqÐ,sÐ,sðð ñô ð ñ ðsGøõP ð 	Xð 	Xð 	XÝ�LŠLÐVÐSTÐVÐVÑWÔWÐWÐWÐWÐWÐWÐWøøøøð	Xøøøð ð C
ð  Ø!Ø'Ø_Ø'Ø%8ØØ"Ø"'Ø$-Ø$Tðð ð  Ø!Ø'ØKØ&Ø%8ØØ!Ø"(Ø$,Ø$Xðð ð  Ø!Ø'ØDØ&Ø%8ØØ!Ø")Ø$-Ø$\ðð ð  Ø!Ø'ØDØ#Ø%3ØØ Ø"*Ø$-Ø$Uðð ð  Ø!Ø'ØHØ&Ø%6ØØ"Ø"(Ø$-Ø$Vðð ðkB
ˆ
õH ÐMÐMÀ*ÐMÑMÔMÑMÔM€HÝ�Z‘”€Jà�Q‚€Øˆ
Ø'ˆðzÈ*ð zð zð zð 	ð ^ÀZð  ^ð  ^ð  ^ˆˆàˆ
Ø#ˆð ` Jð  `ð  `ð  KSð  `ð  `ð  `ð  `ˆØq¸ZÐqÐqÐqˆð ×Ò Ñ'Ô'ðØ+3×+>Ò+>¸vÑ+FÔ+Fð˜˜à�HÐÐØHØ+Ø Ø"Ø&Ø$Ø,Ð2°Ø Øðð ð s;   ¨I ºAÁI ÁAÁI Á"AÁ#G+I É
J ÉI;É;J )N)rQ   ÚloggingÚpathlibr   Útypingr   Ú	getLoggerÚ__name__rY   ÚstrÚintÚdictrs   © r@   r>   ú<module>r}      sÑ   ðØ €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à	ˆÔ	˜8Ñ	$Ô	$€ð ðBð BØðBà˜‘:ðBð ðBð ð	Bð
 ðBð ðBð 
ˆ#ˆsˆ(„^ðBð Bð Bð Bð Bð Br@   