§
    û*¬j4#  ã                  ó¼   — d Z ddlmZ ddlmZmZ ddlmZ ddlmZm	Z	m
Z
mZmZ e G d„ d¦  «        ¦   «         Ze G d„ d	¦  «        ¦   «         Z G d
„ d¦  «        ZdS )u–  AutoPOE2 - Real-Time Net Worth Estimator (Doc 68 / Doc 69 / Doc 70).
======================================================================
Ä�á»‹nh giÃ¡ tá»•ng tÃ i sáº£n kho Ä‘á»“ (Stash) vÃ  vÃ­ (Wallet) cá»§a nhÃ¢n váº­t thá»�i gian thá»±c:
- Quy Ä‘á»•i toÃ n bá»™ currency phá»¥, ngá»�c (Gems), nguyÃªn liá»‡u cháº¿ tÃ¡c (Essences, Runes, Catalysts, Splinters)
  ra Chaos Orb vÃ  Divine Orb dá»±a trÃªn tá»· giÃ¡ POE2 Scout API.
- Cung cáº¥p bÃ¡o cÃ¡o báº£ng tá»•ng há»£p tÃ i sáº£n rÃ²ng sau má»—i map (Net Worth Breakdown).

TuÃ¢n thá»§ nghiÃªm ngáº·t:
- Rule 1: Cold Path Tier 2 (Python 3.11).
- Rule 4: Module hÃ³a Ä‘á»™c láº­p, tráº§n file < 500 dÃ²ng.
é    )Úannotations)Ú	dataclassÚfield)Údatetime)ÚAnyÚDictÚListÚOptionalÚTuplec                  óT   — e Zd ZU dZded<   ded<   ded<    ee¬¦  «        Zd	ed
<   dS )ÚNetWorthCategoryu?   PhÃ¢n nhÃ³m giÃ¡ trá»‹ tÃ i sáº£n theo danh má»¥c váº­t pháº©m.ÚstrÚcategory_nameÚintÚtotal_itemsÚfloatÚtotal_chaos_value)Údefault_factoryzDict[str, Dict[str, Any]]ÚitemsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   Údictr   © ó    úPC:\Projects\AutoPOE2\src\assistant_tool\currency_exchange\net_worth_estimator.pyr   r      sZ   € € € € € € àIÐIØÐÐÑØÐÐÑØÐÐÑØ', u¸TÐ'BÑ'BÔ'B€EÐBÐBÐBÑBÐBÐBr   r   c                  ó�   — e Zd ZU dZded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   dZded<   dZded<   dd„Zdd„ZdS )ÚNetWorthReportu:   BÃ¡o cÃ¡o tá»•ng há»£p tÃ i sáº£n rÃ²ng cá»§a nhÃ¢n váº­t.r   Ú	timestampr   Útotal_net_worth_chaosÚtotal_net_worth_diviner   Úliquid_chaosÚliquid_divineÚliquid_mirrorÚgold_balancezDict[str, NetWorthCategory]Ú
categoriesç      b@Údivine_price_in_chaosç      |@Úmirror_price_in_divineÚreturnc                ó¸  — dddd| j         d›d| j        d›d�d| j        › d	| j        › d
| j        › d�d| j        d›d�ddg}t          | j                             ¦   «         d„ d¬¦  «        D ]F\  }}|j	        dk    s|j
        dk    r+|                     d|d›d|j	        d›d|j
        › d�¦  «         ŒG|                     d¦  «         d                     |¦  «        S )uF   Ä�á»‹nh dáº¡ng chuá»—i báº£ng tá»•ng há»£p ASCII an toÃ n cho console.z8--------------------------------------------------------z*             CHARACTER NET WORTH BREAKDOWNz Total Net Worth : ú,.1fz	 Chaos (~ú.2fz Divine)z Liquid Assets   : ú	 Chaos | z
 Divine | z Mirrorz Gold Reserve    : ú,z Goldz Category Valuation (in Chaos):c                ó   — | d         j         S ©Né   ©r   ©Úxs    r   ú<lambda>z5NetWorthReport.format_ascii_summary.<locals>.<lambda>7   ó   € È1ÈQÌ4ÔKa€ r   T©ÚkeyÚreverser   z  * z<20z: z>9.1fz C  (z items)ú
)r"   r#   r$   r%   r&   r'   Úsortedr(   r   r   r   ÚappendÚjoin)ÚselfÚlinesÚcat_nameÚcats       r   Úformat_ascii_summaryz#NetWorthReport.format_ascii_summary+   s-  € ð GØ8ØFØu $Ô"<ÐuÐuÐuÈDÔLgÐuÐuÐuÐuØw $Ô"3ÐwÐw¸dÔ>PÐwÐwÐ\`Ô\nÐwÐwÐwØ< $Ô"3Ð<Ð<Ð<Ð<ØFØ-ð	
ˆõ $ D¤O×$9Ò$9Ñ$;Ô$;ÐAaÐAaÐkoÐpÑpÔpð 	pð 	p‰MˆH�cØÔ$ qÒ(Ð(¨C¬O¸aÒ,?Ð,?Ø—’Ðn HÐnÐnÐn°CÔ4IÐnÐnÐnÐVYÔVeÐnÐnÐnÑoÔoÐoøØ�ŠÐOÑPÔPÐPØ�yŠy˜ÑÔÐr   c                ó€  — ddg}t          | j                             ¦   «         d„ d¬¦  «        D ]S\  }}|j        t	          d| j        ¦  «        z  dz  }|                     d|› d	|j        › d
|j        d›d|d›d�	¦  «         ŒT|                     d| j        d›d| j        d›d�¦  «         d 	                    |¦  «        S )uD   Ä�á»‹nh dáº¡ng báº£ng Markdown chuáº©n cho tÃ i liá»‡u ká»¹ thuáº­t.ua   | Danh Má»¥c TÃ i Sáº£n | Sá»‘ LÆ°á»£ng Item | GiÃ¡ Trá»‹ Quy Ä�á»•i (Chaos) | Tá»· Trá»�ng (%) |z|---|:---:|:---:|:---:|c                ó   — | d         j         S r4   r6   r7   s    r   r9   z6NetWorthReport.format_markdown_table.<locals>.<lambda>C   r:   r   Tr;   ç      ð?g      Y@z| **z** | z | r/   r1   z.1fz% |u'   | **Tá»”NG Cá»˜NG TÃ€I Sáº¢N** | - | **z Chaos** (~**r0   z Divine**) | **100.0%** |r>   )
r?   r(   r   r   Úmaxr"   r@   r   r#   rA   )rB   ÚmdrD   rE   Úpcts        r   Úformat_markdown_tablez$NetWorthReport.format_markdown_table=   s  € ð pØ%ð
ˆõ $ D¤O×$9Ò$9Ñ$;Ô$;ÐAaÐAaÐkoÐpÑpÔpð 	sð 	s‰MˆH�cØÔ(­3¨s°DÔ4NÑ+OÔ+OÑOÐSXÑXˆCØ�IŠIÐq˜XÐqÐq¨C¬OÐqÐqÀÔ@UÐqÐqÐqÐehÐqÐqÐqÐqÑrÔrÐrÐrà
�	Š	ð  e¸DÔ<Vð  eð  eð  eÐjnô  kFð  eð  eð  eð  eñ  	fô  	fð  	fØ�yŠy˜‰}Œ}Ðr   N)r-   r   )	r   r   r   r   r   r*   r,   rF   rM   r   r   r   r    r       sÅ   € € € € € € àDÐDØ€N€N�NØ Ð Ð Ñ Ø!Ð!Ð!Ñ!ØÐÐÑØÐÐÑØÐÐÑØÐÐÑØ+Ð+Ð+Ñ+Ø#(ÐÐ(Ð(Ð(Ñ(Ø$)ÐÐ)Ð)Ð)Ñ)ð ð  ð  ð  ð$ð ð ð ð ð r   r    c                  ó4   — e Zd ZdZddd„Zdd	„Z	 	 	 ddd„ZdS )ÚNetWorthEstimatoruJ   Bá»™ Æ°á»›c lÆ°á»£ng vÃ  tá»•ng há»£p tÃ i sáº£n rÃ²ng thá»�i gian thá»±c.NÚdefault_prices_in_chaosúOptional[Dict[str, float]]c                ó8   — |pddddddddd	d
ddddddœ| _         d S )NrI   r)   g    @Üï@g      )@g333333ó?g      à?gš™™™™™é?g      ø?g      @g      @g      @g     €A@gš™™™™™©?g333333Ã?)ú	Chaos Orbú
Divine OrbúMirror of KalandrazExalted Orbz	Regal OrbzOrb of AlchemyzOrb of ScouringzVaul OrbzOrb of AnnulmentzGemcutter's PrismzGreater Jeweller's OrbzPerfect Jeweller's OrbzOrb of TransmutationzOrb of AlterationzOrb of Augmentation)Úmarket_prices)rB   rP   s     r   Ú__init__zNetWorthEstimator.__init__N   sN   € à/Fð 0
ØØØ")ØØØ!Ø"ØØ #Ø!$Ø&)Ø&*Ø$(Ø!%Ø#'ðK
ð K
ˆÔÐÐr   Ú	item_namer   r-   c                óR  ‡— |                      ¦   «         Št          ˆfd„dD ¦   «         ¦  «        rdS t          ˆfd„dD ¦   «         ¦  «        rdS t          ˆfd„dD ¦   «         ¦  «        rd	S t          ˆfd
„dD ¦   «         ¦  «        rdS t          ˆfd„dD ¦   «         ¦  «        rdS dS )uO   PhÃ¢n loáº¡i danh má»¥c váº­t pháº©m Ä‘á»ƒ thá»‘ng kÃª tá»· trá»�ng tÃ i sáº£n.c              3  ó    •K  — | ]}|‰v V — Œ	d S ©Nr   ©Ú.0ÚwÚlowers     €r   ú	<genexpr>z;NetWorthEstimator.classify_item_category.<locals>.<genexpr>e   s'   øè è € ÐLÐL˜aˆq�EˆzÐLÐLÐLÐLÐLÐLr   )ÚdivineÚchaosÚmirrorÚexaltedúHigh Currencyc              3  ó    •K  — | ]}|‰v V — Œ	d S r[   r   r\   s     €r   r`   z;NetWorthEstimator.classify_item_category.<locals>.<genexpr>g   s'   øè è € ÐtÐt˜aˆq�EˆzÐtÐtÐtÐtÐtÐtr   )ÚalchemyÚscouringÚregalÚvaalÚannulÚtransmutationÚ
alterationúCrafting Currencyc              3  ó    •K  — | ]}|‰v V — Œ	d S r[   r   r\   s     €r   r`   z;NetWorthEstimator.classify_item_category.<locals>.<genexpr>i   s'   øè è € ÐXÐX˜aˆq�EˆzÐXÐXÐXÐXÐXÐXr   )ÚessenceÚruneÚcatalystÚsplinterÚshardúMaterials & Runesc              3  ó    •K  — | ]}|‰v V — Œ	d S r[   r   r\   s     €r   r`   z;NetWorthEstimator.classify_item_category.<locals>.<genexpr>k   s'   øè è € Ð4Ð4˜aˆq�EˆzÐ4Ð4Ð4Ð4Ð4Ð4r   )ÚgemÚuncutú
Skill Gemsc              3  ó    •K  — | ]}|‰v V — Œ	d S r[   r   r\   s     €r   r`   z;NetWorthEstimator.classify_item_category.<locals>.<genexpr>m   s'   øè è € Ð:Ð:˜aˆq�EˆzÐ:Ð:Ð:Ð:Ð:Ð:r   )ÚwaystoneÚtabletúEndgame MapsÚMiscellaneous)r_   Úany)rB   rX   r_   s     @r   Úclassify_item_categoryz(NetWorthEstimator.classify_item_categoryb   sð   ø€ à—’Ñ!Ô!ˆÝÐLÐLÐLÐLÐ#KÐLÑLÔLÑLÔLð 	#Ø"�?ÝÐtÐtÐtÐtÐ#sÐtÑtÔtÑtÔtð 	'Ø&Ð&ÝÐXÐXÐXÐXÐ#WÐXÑXÔXÑXÔXð 	'Ø&Ð&ÝÐ4Ð4Ð4Ð4Ð#3Ð4Ñ4Ô4Ñ4Ô4ð 	 Ø�<ÝÐ:Ð:Ð:Ð:Ð#9Ð:Ñ:Ô:Ñ:Ô:ð 	"Ø!�>Øˆr   r   ÚwalletúDict[str, int]Ústash_itemsúOptional[List[Dict[str, Any]]]Úcurrent_goldr   Údynamic_pricesr    c                óL  — t          | j        ¦  «        }|r|                     |¦  «         t          ddd¦  «        t          ddd¦  «        t          ddd¦  «        t          ddd¦  «        t          ddd¦  «        t          ddd¦  «        d	œ}|                     ¦   «         D ]�\  }}|dk    rŒ|                      |¦  «        }	|                     |d¦  «        }
t          ||
z  d
¦  «        }||	         }|xj        |z  c_        |xj	        |z  c_	        ||
|ddœ|j        |<   Œ‚|�r|D �]}|                     dd¦  «        }t          |                     dd¦  «        ¦  «        }|dk    rŒC|                      |¦  «        }	|                     |t          |                     dd¦  «        ¦  «        ¦  «        }
t          ||
z  d
¦  «        }||	         }|xj        |z  c_        |xj	        |z  c_	        ||j        v r8|j        |         dxx         |z  cc<   |j        |         dxx         |z  cc<   �Œ||
|ddœ|j        |<   �Œ|                     ¦   «         D ]}t          |j	        d
¦  «        |_	        Œt          d„ |                     ¦   «         D ¦   «         ¦  «        }|                     dd¦  «        }|dk    rt          ||z  d
¦  «        nd}d}d|v r|dk    rt          |d         |z  d¦  «        }t          t          j        ¦   «                              d¦  «        t          |d
¦  «        |t          |                     dd¦  «        ¦  «        t          |                     dd¦  «        ¦  «        t          |                     dd¦  «        ¦  «        ||||¬¦
  «
        S )u\   
        TÃ­nh toÃ¡n tÃ i sáº£n rÃ²ng toÃ n diá»‡n tá»« sá»‘ dÆ° vÃ­ vÃ  kho Ä‘á»“.
        re   r   g        rn   ru   ry   r}   r~   )re   rn   ru   ry   r}   r~   é   ÚWallet)ÚcountÚ
unit_chaosÚtotal_chaosÚlocationÚnameÚUnknownrŠ   r5   Úchaos_valuerŒ   ÚStashc              3  ó$   K  — | ]}|j         V — Œd S r[   r6   )r]   Úcs     r   r`   z8NetWorthEstimator.calculate_net_worth.<locals>.<genexpr>¸   s%   è è € ÐKÐK°!˜!Ô-ÐKÐKÐKÐKÐKÐKr   rT   r)   r+   rU   z%Y-%m-%d %H:%M:%SrS   )
r!   r"   r#   r$   r%   r&   r'   r(   r*   r,   )r   rV   Úupdater   r   r€   ÚgetÚroundr   r   r   r   ÚvaluesÚsumr    r   ÚnowÚstrftime)rB   r�   rƒ   r…   r†   Úpricesr(   rŽ   rŠ   rD   Ú
unit_priceÚ	total_valrE   ÚitemrŒ   Údivine_rateÚtotal_divineÚmirror_rate_divines                     r   Úcalculate_net_worthz%NetWorthEstimator.calculate_net_worthq   sð  € õ �dÔ(Ñ)Ô)ˆØð 	*Ø�MŠM˜.Ñ)Ô)Ð)õ .¨o¸qÀ#ÑFÔFÝ!1Ð2EÀqÈ#Ñ!NÔ!NÝ!1Ð2EÀqÈ#Ñ!NÔ!NÝ*¨<¸¸CÑ@Ô@Ý,¨^¸QÀÑDÔDÝ-¨o¸qÀ#ÑFÔFð3
ð 3
ˆ
ð "Ÿ<š<™>œ>ð 	ð 	‰KˆD�%Ø˜ŠzˆzØØ×2Ò2°4Ñ8Ô8ˆHØŸš D¨#Ñ.Ô.ˆJÝ˜e jÑ0°!Ñ4Ô4ˆIà˜XÔ&ˆCØˆOŒO˜uÑ$ˆOŒOØÐ!Ô! YÑ.Ð!Ô!àØ(Ø(Ø$ð	ð ˆCŒI�d‰OˆOð ñ 	Ø#ð ñ �Ø—x’x ¨	Ñ2Ô2�Ý˜DŸHšH W¨aÑ0Ô0Ñ1Ô1�Ø˜A’:�:Øà×6Ò6°tÑ<Ô<�Ø#ŸZšZ¨­e°D·H²H¸]ÈCÑ4PÔ4PÑ.QÔ.QÑRÔR�
Ý! %¨*Ñ"4°aÑ8Ô8�	à  Ô*�Ø�” 5Ñ(�”ØÐ%Ô%¨Ñ2Ð%Ô%Ø˜3œ9Ð$Ð$Ø”I˜d”O GÐ,Ð,Ô,°Ñ5Ð,Ð,Ñ,Ø”I˜d”O MÐ2Ð2Ô2°iÑ?Ð2Ð2Ñ2Ñ2ð "'Ø&0Ø'0Ø$+ð	'ð '�C”I˜d‘O‘Oð ×$Ò$Ñ&Ô&ð 	Dð 	DˆCÝ$)¨#Ô*?ÀÑ$CÔ$CˆCÔ!Ð!åÐKÐK°z×7HÒ7HÑ7JÔ7JÐKÑKÔKÑKÔKˆØ—j’j ¨uÑ5Ô5ˆØ>IÈAºo¸o•u˜[¨;Ñ6¸Ñ:Ô:Ð:ÐSVˆà"ÐØ 6Ð)Ð)¨k¸Aªo¨oÝ!& vÐ.BÔ'CÀkÑ'QÐSTÑ!UÔ!UÐåÝ”l‘n”n×-Ò-Ð.AÑBÔBÝ"'¨°QÑ"7Ô"7Ø#/Ý˜VŸZšZ¨°QÑ7Ô7Ñ8Ô8Ý˜fŸjšj¨°qÑ9Ô9Ñ:Ô:Ý˜fŸjšjÐ)=¸qÑAÔAÑBÔBØ%Ø!Ø"-Ø#5ð
ñ 
ô 
ð 	
r   r[   )rP   rQ   )rX   r   r-   r   )Nr   N)
r�   r‚   rƒ   r„   r…   r   r†   rQ   r-   r    )r   r   r   r   rW   r€   r¢   r   r   r   rO   rO   K   sr   € € € € € ØTÐTð
ð 
ð 
ð 
ð 
ð(ð ð ð ð$ 7;ØØ59ðZ
ð Z
ð Z
ð Z
ð Z
ð Z
ð Z
r   rO   N)r   Ú
__future__r   Údataclassesr   r   r   Útypingr   r   r	   r
   r   r   r    rO   r   r   r   ú<module>r¦      s$  ðð
ð 
ð #Ð "Ð "Ð "Ð "Ð "à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3ð ðCð Cð Cð Cð Cñ Cô Cñ „ðCð ð*ð *ð *ð *ð *ñ *ô *ñ „ð*ðZ@
ð @
ð @
ð @
ð @
ñ @
ô @
ð @
ð @
ð @
r   