§
    ÔŸ’jò  ã            	       ó(  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
Z
d dlmZmZ d dlmZ d dlmZ  ej        d¦  «        Z e¦   «         Z G d	„ d
e
j        ¦  «        Z G d„ de
j        ¦  «        Z	 ddedededefd„Zdefd„Zd„ ZdS )é    N)ÚPath)ÚAny)Úuuid4)ÚAgentÚLocalAgentConfig)ÚErpDatabaseClient)Úget_settingszdscons.antigravity_daemonc                   ó8   — e Zd ZU eed<   eed<   eed<   eed<   dS )ÚTakeoffItemSchemaÚ	item_nameÚquantityÚunitÚcategoryN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__Úfloat© ó    ú=C:\Projects\DSCons\app\services\antigravity_daemon_service.pyr   r      s4   € € € € € € Ø€N€N�NØ€O€O�OØ
€I€I�IØ€M€M�M€M€Mr   r   c                   ó&   — e Zd ZU ee         ed<   dS )ÚTakeoffResultSchemaÚitemsN)r   r   r   Úlistr   r   r   r   r   r   r      s$   € € € € € € ØÐ!Ô"Ð"Ð"Ñ"Ð"Ð"r   r   Ú
agent_nameÚsystem_promptÚuser_promptÚreturnc              ƒ   ó¤  K  — t                                d| › d�¦  «         t          ¦   «         }t          d|j        ||¬¦  «        }t          |¦  «        4 ƒd {V —†}|                     |¦  «        ƒ d {V —†}|r,|                     ¦   «         ƒ d {V —†cd d d ¦  «        ƒd {V —† S |j        cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S )Nz[AGY_DAEMON] Invoking Agent z...zgemini-3.7-flash)ÚmodelÚapi_keyÚsystem_instructionÚresponse_schema)	ÚloggerÚinfor	   r   Úgemini_api_keyr   ÚchatÚstructured_outputÚtext)r   r   r   r%   ÚsettingsÚconfigÚagentÚresps           r   Ú_call_agent_with_schemar0      s´  è è € õ ‡K‚KÐ>¨zÐ>Ð>Ð>Ñ?Ô?Ð?Ý‰~Œ~€HÝØ ØÔ'Ø(Ø'ð	ñ ô €Fõ �V‰}Œ}ð ð ð ð ð ð ð  Ø—Z’Z Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,ˆØð 	2Ø×/Ò/Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1ðð ð ð ñ ô ð ð ð ð ð ð ð ð ð Œyð	ð ð ð ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á7B?Â&B?Â?
C	ÃC	Ú	task_filec              ƒ   ó²
  K  — t                                d| j        › �¦  «         	 t          | dd¬¦  «        5 }t	          j        |¦  «        }d d d ¦  «         n# 1 swxY w Y   |                     d¦  «        }|s*|                      ¦   «         rt          j	        | ¦  «         d S |                     dd¦  «        }t          |¦  «        dk    r
|d d…         }d	}d
|› d|                     dd¦  «        › d�}t          d||t          ¦  «        ƒ d {V —†}|r|                     dg ¦  «        ng }d}	d|› d�}
t          d|	|
t          ¦  «        ƒ d {V —†}|r|                     dg ¦  «        ng }||z   }d}dt          |¦  «        › dt          |¦  «        › d�}t          d||¦  «        ƒ d {V —†}t                               |¦  «         d}d}d}d}d}ddlm}  |t          ¬¦  «        }t#          |¦  «        D �]æ\  }}t%          t'          ¦   «         ¦  «        }t)          |                     dd¦  «        ¦  «        }|                     dd¦  «        }|                     d d!¦  «        }|                     d"d¦  «        }|                     |d#d$d¬%¦  «        }t)          |                     d&d¦  «        ¦  «        } |d'v r| d(z  } t-          || z  ¦  «        }!||!z  }|                     ¦   «         }"d)|"v r|d*|                     ¦   «         v r|ndz  }nrd+|"v r!|d,|                     ¦   «         v r|n|d-z  z  }nMd.|"v r!|d/|                     ¦   «         v r|d(z  n|z  }n(d0|"v sd1|"v r |d2|                     ¦   «         v r|d(z  n|z  }t                               |||d3z   d4|d3z   › �d5|d3z   › �||d6|› d7|› �||| |!d8|d d9…                              d7d:¦  «        › �d;œ¦  «         �Œèt                               |d<d=d>|d?t          |¦  «        › d@t          |¦  «        › �|t-          |dA¦  «        t-          |dB¦  «        t-          |dA¦  «        t-          |dA¦  «        dCœ
¦  «         |                      ¦   «         rt          j	        | ¦  «         t                                dD| j        › dEt          |¦  «        › dF�¦  «         d S # t6          $ r‘}#t                                dG| j        › dE|#› �¦  «         dt;          ¦   «         v r#|r!t                               |dHdI|#› �dJœ¦  «         |                      ¦   «         rt          j	        | ¦  «         Y d }#~#d S Y d }#~#d S d }#~#ww xY w)KNu*   
[AGY_DAEMON] Báº¯t Ä‘áº§u xá»­ lÃ½ task: Úrzutf-8)ÚencodingÚ
takeoff_idÚ
text_layerÚ i † uA   Báº¡n lÃ  AI Quá»³nh QS - ChuyÃªn gia BÃ³c tÃ¡ch Khá»‘i lÆ°á»£ng.u   Dá»¯ liá»‡u báº£n váº½/HSMT:
u   
Gá»£i Ã½: Údrawing_hintu¤   

HÃ£y trÃ­ch xuáº¥t Táº¤T Cáº¢ cÃ¡c háº¡ng má»¥c cÃ´ng viá»‡c thÃ nh danh sÃ¡ch. GÃ¡n category phÃ¹ há»£p (concrete, rebar, formwork, earthwork, finishing, civil).u   Quá»³nhr   u4   Báº¡n lÃ  AI LÃ¢m - Ká»¹ sÆ° Biá»‡n phÃ¡p thi cÃ´ng.u/   Ä�Ã¢y lÃ  cÃ¡c háº¡ng má»¥c Quá»³nh Ä‘Ã£ bÃ³c:
u  

HÃ£y Ä‘á»� xuáº¥t THÃŠM cÃ¡c háº¡ng má»¥c biá»‡n phÃ¡p thi cÃ´ng/phá»¥ trá»£ (nhÆ° bÆ¡m nÆ°á»›c, lÃ¡n tráº¡i, vÃ¡n khuÃ´n, cá»« Larsen,...) cÃ²n thiáº¿u. Náº¿u khÃ´ng thiáº¿u gÃ¬, tráº£ vá»� máº£ng rá»—ng. Ä�á»«ng láº·p láº¡i cÃ¡c má»¥c Quá»³nh Ä‘Ã£ bÃ³c.u   LÃ¢mu/   Báº¡n lÃ  AI TÃ¹ng - GiÃ¡m Ä‘á»‘c Ká»¹ thuáº­t.u   Quá»³nh bÃ³c Ä‘Æ°á»£c u    háº¡ng má»¥c. LÃ¢m bá»• sung uq    háº¡ng má»¥c. HÃ£y Ä‘Æ°a ra 1 cÃ¢u nháº­n xÃ©t chuyÃªn nghiá»‡p duy nháº¥t Ä‘á»ƒ bÃ¡o cÃ¡o vá»›i ngÆ°á»�i dÃ¹ng.u   TÃ¹ngr   g        )ÚPricingResolverService)Ú
erp_clientr   r   Úcivilr   u
   KhÃ´ng rÃµr   u   BÃ³c tÃ¡ch tá»± Ä‘á»™ngu   Váº­t liá»‡u)ÚkeywordÚcontextÚmaterial_groupÚfallback_priceÚprice)Ú100mÚ100m2Ú100m3u   100 cÃ¢yéd   u	   bÃª tÃ´ngÚm3u   thÃ©pu   táº¥ng     @�@u   vÃ¡n khuÃ´nrB   u   Ä‘Ã ou   Ä‘áº¯prC   é   z1.zTT.u   AI Tá»± Ä�á»™ng: ú z'/dashboard/material-price-comparison?q=é   ú+)Úidr5   Ú
item_orderÚwbs_codeÚ	norm_coder   r   Údimension_formular   r   Úunit_price_vndÚtotal_amount_vndÚprice_source_urlÚ	completedéc   Úmulti_agent_verifiedu=   Antigravity Daemon Multi-Agent cháº¡y thÃ nh cÃ´ng. Quá»³nh: u   , LÃ¢m: é   é   )
Útakeoff_statusÚconfidence_scoreÚconfidence_levelÚai_report_messageÚai_analysis_notesÚtotal_estimated_cost_vndÚtotal_concrete_volume_m3Útotal_rebar_weight_tonsÚtotal_formwork_area_m2Útotal_earthwork_volume_m3u   [AGY_DAEMON] HoÃ n thÃ nh task z: u    háº¡ng má»¥c.u   [AGY_DAEMON] Lá»—i xá»­ lÃ½ ÚerroredzAntigravity Daemon Error: )rW   r[   )r&   r'   ÚnameÚopenÚjsonÚloadÚgetÚexistsÚosÚremoveÚlenr0   r   r:   Údelete_drawing_takeoff_itemsÚ.app.services.state_price_sync.pricing_resolverr9   Ú	enumerater   r   r   Úresolve_material_price_syncÚroundÚlowerÚcreate_drawing_takeoff_itemÚreplaceÚupdate_drawing_takeoffÚ	ExceptionÚerrorÚlocals)$r1   ÚfÚtaskr5   Útext_contentÚ	quynh_sysÚ	quynh_usrÚ	quynh_resr   Úlam_sysÚlam_usrÚlam_resÚ	lam_itemsÚ	all_itemsÚtung_sysÚtung_usrrZ   Ú
total_costÚtotal_concreteÚtotal_rebarÚtotal_formworkÚtotal_earthworkr9   ÚresolverÚiÚitemÚitem_idÚqtyÚcatrb   r   ÚresolvedÚu_priceÚtot_vndÚnlÚes$                                       r   Úprocess_taskr”   0   s@  è è € Ý
‡K‚KÐN¸i¼nÐNÐNÑOÔOÐOðC!Ý�)˜S¨7Ð3Ñ3Ô3ð 	 °qÝ”9˜Q‘<”<ˆDð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð —X’X˜lÑ+Ô+ˆ
Øð 	Ø×ÒÑ!Ô!ð %Ý”	˜)Ñ$Ô$Ð$ØˆFà—x’x ¨bÑ1Ô1ˆÝˆ|ÑÔ˜vÒ%Ð%Ø'¨¨¨Ô0ˆLàWˆ	ð T°\ð  Tð  TÈtÏxÊxÐXfÐhjÑOkÔOkð  Tð  Tð  Tˆ	å1Ø�y )Õ-@ñ
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆ	ð /8Ð?�	—’˜g rÑ*Ô*Ð*¸RˆàHˆð PÀUð  Pð  Pð  PˆÝ/Ø�G˜WÕ&9ñ
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð 18Ð?�G—K’K ¨Ñ,Ô,Ð,¸Rˆ	à˜IÑ%ˆ	àDˆð X­C°©J¬Jð  Xð  XÕVYÐZcÑVdÔVdð  Xð  Xð  XˆÝ"9¸'À8ÈXÑ"VÔ"VÐVÐVÐVÐVÐVÐVÐå×/Ò/°
Ñ;Ô;Ð;Øˆ
ØˆØˆØˆØˆð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð *Ð)µZÐ@Ñ@Ô@ˆå  Ñ+Ô+ð 0	ñ 0	‰GˆAˆtÝ�%™'œ'‘l”lˆGÝ˜Ÿš ¨QÑ/Ô/Ñ0Ô0ˆCØ—(’(˜: wÑ/Ô/ˆCØ—8’8˜K¨Ñ6Ô6ˆDØ—8’8˜F BÑ'Ô'ˆDà×;Ò;ØØ1Ø-Ø%ð	 <ñ ô ˆHõ ˜HŸLšL¨°&Ñ9Ô9Ñ:Ô:ˆGð Ð=Ð=Ð=Ø! C™-�å˜C '™MÑ*Ô*ˆGØ˜'Ñ!ˆJà—’‘”ˆBØ˜bÐ Ð Ø¨°·²±´Ð)=Ð)= # #À3ÑF��Ø˜B��Ø g°·²±´Ð&=Ð&=˜s˜sÀ3ÈÁ<ÑO��Ø "Ð$Ð$Ø¨w¸$¿*º*¹,¼,Ð/FÐ/F #¨¡) )ÈCÑO��Ø˜B�� (¨b . .Ø°¸4¿:º:¹<¼<Ð0GÐ0G 3¨¡9 9ÈSÑP�å×2Ò2à!Ø",Ø"# a¡%Ø , Q¨¡U  Ø!. q¨1¡u  Ø!%Ø #Ø)I¸SÐ)IÐ)IÀ4Ð)IÐ)IØ Ø #Ø&-Ø(/Ø(oÐRVÐWZÐXZÐWZÔR[×RcÒRcÐdgÐilÑRmÔRmÐ(oÐ(oðð ñô ð ñ õ$ 	×)Ò)Øà"-Ø$&Ø$:Ø%6ð &JÕehÐinÑeoÔeoð  &Jð  &JÕy|ð  ~Gñ  zHô  zHð  &Jð  &JØ,6Ý,1°.À!Ñ,DÔ,DÝ+0°¸aÑ+@Ô+@Ý*/°ÀÑ*BÔ*BÝ-2°?ÀAÑ-FÔ-Fðð ñ	
ô 	
ð 	
ð  ×ÒÑÔð 	!ÝŒI�iÑ Ô Ð Ý�ŠØ^¨i¬nÐ^Ð^ÅÀIÁÄÐ^Ð^Ð^ñ	
ô 	
ð 	
ð 	
ð 	
øõ ð !ð !ð !Ý�ŠÐI°I´NÐIÐIÀaÐIÐIÑJÔJÐJØ�6™8œ8Ð#Ð#¨
Ð#Ý×-Ò-Øà&/Ø)IÀaÐ)IÐ)Iðð ñô ð ð ×ÒÑÔð 	!ÝŒI�iÑ Ô Ð Ð Ð Ð Ð Ð Ð ð	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøøð!øøøsC   ¦R; ¸AÁR; ÁAÁR; Á AÁ!AR; Â%PR; Ò;
UÓB UÕUc               ƒ   ó¢  K  — t                                d¦  «         t          d¦  «        } |                      dd¬¦  «         	 	 t	          |                      d¦  «        ¦  «        }|D ]}t          |¦  «        ƒ d {V —† Œn4# t          $ r'}t                                d|› �¦  «         Y d }~nd }~ww xY wt          j
        d¦  «        ƒ d {V —† Œ�)Nu`   ðŸš€ [DSCons] Antigravity Background Service started: listening to storage/antigravity_tasks/...zstorage/antigravity_tasksT)ÚparentsÚexist_okztask_*.jsonu   [AGY_DAEMON] Lá»—i trong loop: rU   )r&   r'   r   Úmkdirr   Úglobr”   rt   ru   ÚasyncioÚsleep)Útask_dirÚ
task_filesÚtfr“   s       r   Ústart_antigravity_daemon_looprŸ   ¸   s  è è € Ý
‡K‚KØjñô ð õ Ð/Ñ0Ô0€HØ‡N‚N˜4¨$€NÑ/Ô/Ð/ðð	@Ý˜hŸmšm¨MÑ:Ô:Ñ;Ô;ˆJØ ð 'ð '�Ý" 2Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð'øåð 	@ð 	@ð 	@Ý�LŠLÐ>¸1Ð>Ð>Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?øøøøð	@øøøåŒm˜AÑÔÐÐÐÐÐÐÐðs   Á<B Â
B3ÂB.Â.B3)N)rš   rd   Úloggingrh   Úpathlibr   Útypingr   Úuuidr   ÚpydanticÚgoogle.antigravityr   r   Úapp.core.postgres.erp_clientr   Úapp.core.settingsr	   Ú	getLoggerr&   r:   Ú	BaseModelr   r   r   r0   r”   rŸ   r   r   r   ú<module>rª      s™  ðØ €€€Ø €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6à :Ð :Ð :Ð :Ð :Ð :Ø *Ð *Ð *Ð *Ð *Ð *à	ˆÔ	Ð6Ñ	7Ô	7€ØÐÑ Ô €
ðð ð ð ð ˜Ô*ñ ô ð ð#ð #ð #ð #ð #˜(Ô,ñ #ô #ð #ð
 LPðð ØðØ$'ðØ69ðàðð ð ð ð$E! $ð E!ð E!ð E!ð E!ðPð ð ð ð r   