§
    Õ¡j#  ã                   ó˜   — d Z ddlmZ ddlmZmZmZ e G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Z G d„ d	¦  «        Z	d
S )u)  
Bá»™ Tháº©m Ä�á»‹nh Ä�a Chiá»�u 'What Is Better' (Pareto Decision & Comparison Engine)
ChuyÃªn trÃ¡ch so sÃ¡nh, Ä‘Ã¡nh giÃ¡ vÃ  tráº£ lá»�i dá»©t khoÃ¡t cÃ¢u há»�i: "CÃ¡i nÃ o tá»‘t hÆ¡n vÃ  vÃ¬ sao?"
Ã¡p dá»¥ng cho Trang bá»‹ (Gear), Ká»¹ nÄƒng (Skills) vÃ  Chiáº¿n lÆ°á»£c Kinh táº¿ (Economy).
é    )Ú	dataclass)ÚAnyÚDictÚOptionalc                   ó  — e Zd ZU eed<   eed<   dZeed<   dZeed<   dZe	ed<   dZ
e	ed	<   dZe	ed
<   dZe	ed<   dZe	ed<   dZe	ed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZe	ed<   dS )Ú	ItemStatsÚnameÚsloté   Ú
item_levelÚRareÚrarityg        Ú	flat_physÚ	flat_coldÚ	flat_fireÚflat_lightningÚattack_speed_pctÚcrit_multiplier_pctr   Úmax_lifeÚfire_resÚcold_resÚlightning_resÚ	chaos_resÚspell_suppression_pctÚmovement_speed_pctÚestimated_trade_value_chaosN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r   Úintr   r   Úfloatr   r   r   r   r   r   r   r   r   r   r   r   r   © ó    ú9C:\Projects\AutoPOE2\src\agentic_engine\what_is_better.pyr   r      s)  € € € € € € à
€I€I�IØ
€I€I�IØ€J�ÐÐÑØ€FˆCÐÐÑØ€IˆuÐÐÑØ€IˆuÐÐÑØ€IˆuÐÐÑØ€N�EÐÐÑØ!Ð�eÐ!Ð!Ñ!Ø!$Ð˜Ð$Ð$Ñ$Ø€HˆcÐÐÑØ€HˆcÐÐÑØ€HˆcÐÐÑØ€M�3ÐÐÑØ€IˆsÐÐÑØ!"Ð˜3Ð"Ð"Ñ"ØÐ˜ÐÐÑØ),Ð Ð,Ð,Ñ,Ð,Ð,r%   r   c                   óv   — e Zd ZU eed<   eed<   eed<   eed<   eed<   ee         ed<   eed<   eed<   eed	<   d
S )ÚItemComparisonResultÚwinnerÚdecisionÚutility_deltaÚdps_delta_pctÚehp_delta_pctÚresist_impact_warningÚheadline_verdictÚdetailed_reasoningÚsalvage_or_trade_adviceN)r   r   r   r    r!   r#   r   r$   r%   r&   r(   r(   !   s|   € € € € € € à€K€K�KØ€M€M�MØÐÐÑØÐÐÑØÐÐÑØ# Cœ=Ð(Ð(Ñ(ØÐÐÑØÐÐÑØ Ð Ð Ñ Ð Ð r%   r(   c            
       ó|   — e Zd ZdZddefd„Z	 ddededeeee	f                  d	e
fd
„Zde	ded	eeef         fd„ZdS )ÚWhatIsBetterEvaluatoruK   
    Bá»™ Tháº©m Ä�á»‹nh Ä�a Chiá»�u Quyáº¿t Ä�á»‹nh 'What Is Better'.
    ú-Martial Artist (Hollow Form Whirling Assault)Útarget_build_namec                 ó>   — || _         d| _        d| _        d| _        d S )Nç      ð?g333333ó?gš™™™™™é?)r5   Ú
weight_dpsÚ
weight_ehpÚweight_speed)Úselfr5   s     r&   Ú__init__zWhatIsBetterEvaluator.__init__3   s&   € Ø!2ˆÔØˆŒØˆŒØˆÔÐÐr%   NÚcurrent_itemÚcandidate_itemÚplayer_current_resistsÚreturnc                 ó
  — |j         |j        dz  z   |j        z   |j        z   }|j         |j        dz  z   |j        z   |j        z   }|d|j        dz  z   z  d|j        dz  z   z  }|d|j        dz  z   z  d|j        dz  z   z  }t          d|¦  «        }t          ||z
  |z  dz  d¦  «        }	|j        |j	        z   |j
        z   |j        dz  z   }
|j        |j	        z   |j
        z   |j        dz  z   }|j        dz  |
dz  z   |j        dz  z   }|j        dz  |dz  z   |j        dz  z   }t          d|¦  «        }t          ||z
  |z  dz  d¦  «        }d }|rŒ|j        |j        z
  }|j	        |j	        z
  }|j
        |j
        z
  }|                     d	d
¦  «        |z   d
k     rd}n?|                     dd
¦  «        |z   d
k     rd}n|                     dd
¦  «        |z   d
k     rd}|	| j        z  || j        z  z   }|r|dz  }|dk    rd}d}d|d›d�}d|	d›d|d›d�}d}nG|dk    r2d}d}d| d›d�}d |	d›d!|d›d"�}|j        d#k    rd$|j        d%›d&�}nd'}nd(}d}d)}d*|d+›d,�}d-}t%          ||t          |d¦  «        |	|||||¬.¦	  «	        S )/NgÍÌÌÌÌÌô?r7   g      Y@g      i@r   g      ø?g       @g      @ÚfireéK   uM   Cáº¢NH BÃ�O: ThÃ¡o Ä‘á»“ cÅ© sáº½ lÃ m KhÃ¡ng Lá»­a tá»¥t dÆ°á»›i tráº§n 75%!ÚcolduM   Cáº¢NH BÃ�O: ThÃ¡o Ä‘á»“ cÅ© sáº½ lÃ m KhÃ¡ng BÄƒng tá»¥t dÆ°á»›i tráº§n 75%!Ú	lightninguL   Cáº¢NH BÃ�O: ThÃ¡o Ä‘á»“ cÅ© sáº½ lÃ m KhÃ¡ng LÃ´i tá»¥t dÆ°á»›i tráº§n 75%!g      >@g      $@Ú	CANDIDATEÚEQUIP_UPGRADEu(   Ä�á»’ Má»šI Tá»�T HÆ N VÆ¯á»¢T TRá»˜I (+ú.1fu	    Ä‘iá»ƒm)u?   MÃ³n Ä‘á»“ má»›i mang láº¡i sÃ¡t thÆ°Æ¡ng vÆ°á»£t trá»™i (DPS: z+gu#   %) vÃ  chá»‰ sá»‘ sinh tá»“n (EHP: u   %). Khuyáº¿n nghá»‹ máº·c ngay.ur   Ä�á»“ cÅ© cÃ³ thá»ƒ Ä‘Æ°a vÃ o BÃ n PhÃ¢n Giáº£i Thá»£ RÃ¨n (SALVAGE_BENCH) Ä‘á»ƒ rÃ£ láº¥y VÃ ng & Crafting Dust.g       ÀÚCURRENTÚKEEP_CURRENTu8   Ä�á»’ HIá»†N Táº I Tá»�T HÆ N NHIá»€U (Ä�á»“ má»›i kÃ©m uQ   MÃ³n Ä‘á»“ má»›i lÃ m suy giáº£m nghiÃªm trá»�ng chá»‰ sá»‘ chiáº¿n Ä‘áº¥u (DPS: z%, EHP: u   %). Tuyá»‡t Ä‘á»‘i khÃ´ng thay.g      .@uK   Cáº¥t vÃ o HÃ²m Ä‘á»“ giao dá»‹ch (STASH_FOR_TRADE), Ä‘á»‹nh giÃ¡ khoáº£ng z.0fz Chaos.uQ   RÃ£ Ä‘á»“ táº¡i BÃ n Thá»£ RÃ¨n (SALVAGE_BENCH) láº¥y VÃ ng tráº£ thuáº¿ Faustus.ÚTIEu    HAI MÃ“N Ä�á»’ NGANG NGá»¬A NHAUu5   Ä�á»™ chÃªnh lá»‡ch há»¯u dá»¥ng khÃ´ng Ä‘Ã¡ng ká»ƒ (z+.1fuR    Ä‘iá»ƒm). NÃªn Æ°u tiÃªn mÃ³n Ä‘á»“ cÃ³ nhiá»�u khÃ¡ng hoáº·c socket ngá»�c hÆ¡n.uY   LÆ°u vÃ o hÃ²m Ä‘á»“ dá»± phÃ²ng náº¿u cáº§n bÃ¹ khÃ¡ng cho cÃ¡c báº£n Ä‘á»“ Ä‘áº·c thÃ¹.)	r)   r*   r+   r,   r-   r.   r/   r0   r1   )r   r   r   r   r   r   ÚmaxÚroundr   r   r   r   r   r   Úgetr8   r9   r   r(   )r;   r=   r>   r?   Ú	curr_flatÚ	cand_flatÚcurr_dps_scoreÚcand_dps_scoreÚbase_dpsr,   Úcurr_res_sumÚcand_res_sumÚcurr_ehp_scoreÚcand_ehp_scoreÚbase_ehpr-   Úresist_warningÚ
delta_fireÚ
delta_coldÚdelta_lightÚtotal_utilityr)   r*   ÚheadlineÚreasonÚsalvage_advices                             r&   Úcompare_itemsz#WhatIsBetterEvaluator.compare_items9   s>  € ð "Ô+¨lÔ.DÀsÑ.JÑJØ!Ô+ñ,Ø.:Ô.IñJˆ	à#Ô-°Ô0HÈ3Ñ0NÑNØ#Ô-ñ.Ø0>Ô0MñNˆ	ð # c¨LÔ,IÈEÑ,QÑ&QÑRÐVYÐ\hÔ\|ð  @Eñ  ]Eñ  WEñ  FˆØ" c¨NÔ,KÈeÑ,SÑ&SÑTÐX[Ð^lô  _Að  DIñ  _Iñ  YIñ  Jˆå�s˜NÑ+Ô+ˆÝ °Ñ ?À8ÑKÈuÑTÐVWÑXÔXˆà#Ô,¨|Ô/DÑDÀ|ÔGaÑaÐdpÔdzð  ~Añ  eAñ  AˆØ%Ô.°Ô1HÑHÈ>ÔKgÑgÐjxô  kCð  FIñ  kIñ  Iˆà%Ô.°Ñ4°|ÀcÑ7IÑIÈLÔLnÐqtÑLtÑtˆØ'Ô0°3Ñ6¸ÈÑ9KÑKÈnÔNrÐuxÑNxÑxˆå�s˜NÑ+Ô+ˆÝ °Ñ ?À8ÑKÈuÑTÐVWÑXÔXˆàˆØ!ð 
	pØ'Ô0°<Ô3HÑHˆJØ'Ô0°<Ô3HÑHˆJØ(Ô6¸Ô9SÑSˆKà%×)Ò)¨&°"Ñ5Ô5¸
ÑBÀRÒGÐGØ!p��Ø'×+Ò+¨F°BÑ7Ô7¸*ÑDÀrÒIÐIØ!p��Ø'×+Ò+¨K¸Ñ<Ô<¸{ÑJÈRÒOÐOØ!o�à&¨¬Ñ8¸]ÈTÌ_Ñ=\Ñ]ˆàð 	"Ø˜TÑ!ˆMà˜DÒ Ð Ø ˆFØ&ˆHØ^À-Ð^Ð^Ð^Ð^ˆHðeÐR_Ðgð eð eØ3@Ðdðeð eð eð ð RˆNˆNØ˜dÒ"Ð"ØˆFØ%ˆHØoÐS`ÐR`ÐoÐoÐoÐoˆHðeØ&Ðdðeð eØ3@Ðdðeð eð eð ð Ô9¸TÒAÐAð "gÐo}ô  pZð  "gð  "gð  "gð  "g��à!t��àˆFØ%ˆHØ9ˆHð tÈ]ð  tð  tð  tð  tˆFØxˆNå#ØØÝ ¨qÑ1Ô1Ø'Ø'Ø"0Ø%Ø%Ø$2ð

ñ 

ô 

ð 
	
r%   Úcurrent_goldÚavailable_divinec           	      ó‚  — dddddddœdd	d
ddddœdddddddœg}|D ];}t          |d         ¦  «        }t          |d         ¦  «        }||k    o||k    |d<   Œ<d„ |D ¦   «         }|r3t          |d„ ¬¦  «        }d|d         › d|d         › d�}	d|d ›d!|d"›d#�}
n|d$         }d|d         › �}	d%|d ›d&�}
|d'         |	|
|d(œS ))NÚSEKHEMA_CARRYu&   Cháº¡y Dá»‹ch Vá»¥ Sekhema Trial Carryg      +@i€>  gš™™™™™	@u:   Tháº¥p (YÃªu cáº§u build Ä‘á»§ cá»©ng Ä‘á»ƒ khÃ´ng cháº¿t))ÚactivityÚtitleÚprofit_div_per_hourÚgold_tax_neededÚcapital_required_divÚriskÚWAYSTONE_T16_SPEEDRUNu-   CÃ y Tá»‘c Ä�á»™ Waystone T16 (Speed Mapping)g      @r   g      à?u9   Ráº¥t Tháº¥p (Nguá»“n cÃ y VÃ ng chÃ­nh cho tÃ i khoáº£n)ÚFAUSTUS_ARBITRAGEu4   BuÃ´n ChÃªnh Lá»‡ch Ngá»�c & Omen TrÃªn SÃ n Faustusg      "@i¨a  g      @u:   Trung BÃ¬nh (Phá»¥ thuá»™c biáº¿n Ä‘á»™ng giÃ¡ theo giá»�)ri   rj   Úis_feasiblec                 ó"   — g | ]}|d          ¯
|‘ŒS )rn   r$   )Ú.0Úos     r&   ú
<listcomp>zDWhatIsBetterEvaluator.compare_farming_activities.<locals>.<listcomp>±   s"   € ÐCÐCÐC !°!°MÔ2BÐC˜AÐCÐCÐCr%   c                 ó,   — t          | d         ¦  «        S )Nrh   )r#   )Úxs    r&   ú<lambda>zBWhatIsBetterEvaluator.compare_farming_activities.<locals>.<lambda>³   s   € ½5ÀÐCXÔAYÑ;ZÔ;Z€ r%   )Úkeyu   HOáº T Ä�á»˜NG Tá»�T NHáº¤T: rg   z (rh   z Div/h)u   Báº¡n Ä‘ang cÃ³ Ä‘á»§ ú,u    VÃ ng vÃ  rH   ud    Divine Ä‘á»ƒ tráº£ phÃ­ vÃ  vá»‘n. Hoáº¡t Ä‘á»™ng nÃ y cho tá»· suáº¥t sinh lá»�i tá»‘i Æ°u nháº¥t.r   u   Quá»¹ vÃ ng hiá»‡n táº¡i (u‹    VÃ ng) khÃ´ng Ä‘á»§ Ä‘á»ƒ tráº£ thuáº¿ sÃ n. Cháº¡y Waystone T16 Ä‘á»ƒ nháº·t vÃ ng lÃ  lá»±a chá»�n sinh tá»“n tá»‘i thÆ°á»£ng lÃºc nÃ y.rf   )Úrecommended_activityr/   ÚexplanationÚall_options)r"   r#   rL   )r;   rb   rc   ÚoptionsÚoptÚgold_neededÚ
cap_neededÚfeasible_optionsÚbest_optÚverdictry   s              r&   Úcompare_farming_activitiesz0WhatIsBetterEvaluator.compare_farming_activities�   s®  € ð ,ØAØ'+Ø#(Ø(+ØTðð ð 4ØHØ'*Ø#$Ø(+ØSðð ð 0ØOØ'*Ø#(Ø(+ØTðð ð#)
ˆð6 ð 	ð 	ˆCÝ˜cÐ"3Ô4Ñ5Ô5ˆKÝ˜sÐ#9Ô:Ñ;Ô;ˆJà Ò+ð /Ø  JÒ.ð �ÑÐð
 DÐC wÐCÑCÔCÐØð 	SÝÐ+Ð1ZÐ1ZÐ[Ñ[Ô[ˆHØs°h¸wÔ6GÐsÐsÈ8ÐTiÔKjÐsÐsÐsˆGð I°<ð  Ið  Ið  IÐN^ð  Ið  Ið  Ið  IˆKˆKà˜q”zˆHØI°h¸wÔ6GÐIÐIˆGð S°|ð  Sð  Sð  Sð  SˆKð %-¨ZÔ$8Ø 'Ø&Ø"ð	
ð 
ð 	
r%   )r4   )N)r   r   r   Ú__doc__r    r<   r   r   r   r"   r(   ra   r#   r   r‚   r$   r%   r&   r3   r3   .   sÐ   € € € € € ðð ð ð  ¨#ð  ð  ð  ð  ð <@ð	R
ð R
àðR
ð "ðR
ð !)¨¨c°3¨h¬Ô 8ð	R
ð
 
ðR
ð R
ð R
ð R
ðh3
°sð 3
Èeð 3
ÐX\Ð]`ÐbeÐ]eÔXfð 3
ð 3
ð 3
ð 3
ð 3
ð 3
r%   r3   N)
rƒ   Údataclassesr   Útypingr   r   r   r   r(   r3   r$   r%   r&   ú<module>r†      så   ððð ð "Ð !Ð !Ð !Ð !Ð !Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ð ð-ð -ð -ð -ð -ñ -ô -ñ „ð-ð* ð	!ð 	!ð 	!ð 	!ð 	!ñ 	!ô 	!ñ „ð	!ðR
ð R
ð R
ð R
ð R
ñ R
ô R
ð R
ð R
ð R
r%   