§
    ü1¬jR'  ã                  óÆ   — 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 ddlmZmZmZ ddlmZmZmZ ddlmZmZ e G d	„ d
¦  «        ¦   «         Z G d„ d¦  «        ZdS )uØ  AutoPOE2 - Atlas Progression & Reward Service (Doc 70 / Chu Ká»³ 6).
=====================================================================
Service tÃ­ch há»£p quáº£n trá»‹ tiáº¿n trÃ¬nh Atlas vÃ  tháº©m Ä‘á»‹nh pháº§n thÆ°á»Ÿng háº­u cáº§n:
1. Tá»± Ä‘á»™ng cáº­p nháº­t Ä‘á»“ thá»‹ báº£n Ä‘á»“ Atlas (mark_node_completed, Frontier Expansion).
2. Tá»± Ä‘á»™ng cáº¥p Ä‘iá»ƒm thÆ°á»Ÿng CÃ¢y Ná»™i Táº¡i Atlas (Atlas Tree Allocation DAG) qua AtlasTreePlanner.
3. Tháº©m Ä‘á»‹nh vÃ  theo dÃµi tÄƒng trÆ°á»Ÿng tÃ i sáº£n rÃ²ng tÃ­ch lÅ©y (Real-Time Net Worth Tracking) qua NetWorthEstimator.
4. Xuáº¥t bÃ¡o cÃ¡o tá»•ng káº¿t tiáº¿n trÃ¬nh vÃ  pháº§n thÆ°á»Ÿng (MapCompletionRewardResult) chuáº©n Rule 5.

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, khÃ´ng chÃ¨n mÃ£ cá»©ng vÃ o Coordinator.
- Rule 5: Empirical DoD & BÃ¡o cÃ¡o gáº¯n nhÃ£n [MÃ” PHá»ŽNG THUáº¬T TOÃ�N HEADLESS - KHÃ”NG PHáº¢I LIVE GAME].
é    )Úannotations)Ú	dataclassÚfield)Údatetime)ÚAnyÚDictÚListÚOptional)Ú
AtlasGraphÚAtlasGraphNodeÚNodeProgressionState)ÚAtlasPassiveNodeÚAtlasTreePlannerÚ	TreePhase)ÚNetWorthEstimatorÚNetWorthReportc                  óÄ   — 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ed<   ded<   ded<   ded<   ded<   ded<    ed„ ¬¦  «        Zded<   dS )ÚMapCompletionRewardResultuc   Káº¿t quáº£ tá»•ng há»£p pháº§n thÆ°á»Ÿng vÃ  tiáº¿n trÃ¬nh sau khi hoÃ n thÃ nh má»™t báº£n Ä‘á»“.ÚstrÚmap_node_idÚmap_nameÚintÚmap_tierÚboolÚbonus_completedzOptional[AtlasPassiveNode]Únewly_allocated_passiveÚtotal_atlas_passive_pointsÚcurrent_tree_phaseÚfrontier_countÚfloatÚatlas_completion_pctÚcurrent_net_worth_chaosÚcurrent_net_worth_divineÚdelta_net_worth_chaosÚdelta_net_worth_divinezDict[str, int]Úliquid_assetsc                 óL   — t          j        ¦   «                              ¦   «         S ©N)r   ÚnowÚ	isoformat© ó    úDC:\Projects\AutoPOE2\src\assistant_tool\atlas\progression_service.pyú<lambda>z"MapCompletionRewardResult.<lambda>6   s   € µ8´<±>´>×3KÒ3KÑ3MÔ3M€ r,   )Údefault_factoryÚ	timestampN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r0   r+   r,   r-   r   r   %   sÜ   € € € € € € àmÐmØÐÐÑØ€M€M�MØ€M€M�MØÐÐÑØ7Ð7Ð7Ñ7Ø#Ð#Ð#Ñ#ØÐÐÑØÐÐÑØÐÐÑØ"Ð"Ð"Ñ"Ø#Ð#Ð#Ñ#Ø Ð Ð Ñ Ø!Ð!Ð!Ñ!Ø!Ð!Ð!Ñ!Ø�UÐ+MÐ+MÐNÑNÔN€IÐNÐNÐNÑNÐNÐNr,   r   c                  ót   — e Zd ZdZ	 	 	 d d!d	„Zed"d„¦   «         Zed#d„¦   «         Z	 	 	 	 d$d%d„Zd&d„Z	d'd„Z
dS )(ÚAtlasProgressionServiceu]   Service Ä‘iá»�u phá»‘i tiáº¿n trÃ¬nh Ä‘á»“ thá»‹ Atlas vÃ  pháº§n thÆ°á»Ÿng tÃ i sáº£n rÃ²ng.NÚatlas_graphúOptional[AtlasGraph]Útree_plannerúOptional[AtlasTreePlanner]Únet_worth_estimatorúOptional[NetWorthEstimator]c                óÔ   — |�|nt          j        d¦  «        | _        |�|nt          ¦   «         | _        |�|nt          ¦   «         | _        g | _        d| _        d| _	        d| _
        d S )Nés   ç        F)r   Úcreate_canonical_atlas_graphr8   r   r:   r   r<   Ú_historyÚ_last_net_worth_chaosÚ_last_net_worth_divineÚ_initial_net_worth_recorded)Úselfr8   r:   r<   s       r-   Ú__init__z AtlasProgressionService.__init__<   s‡   € ð 'Ð2ˆKˆK½
Ô8_Ð`cÑ8dÔ8dð 	Ôð )Ð4ˆLˆLÕ:JÑ:LÔ:Lð 	Ôð $7Ð#BÐÐÕHYÑH[ÔH[ð 	Ô ð :<ˆŒØ,/ˆÔ"Ø-0ˆÔ#Ø16ˆÔ(Ð(Ð(r,   ÚreturnúList[MapCompletionRewardResult]c                ó*   — t          | j        ¦  «        S r(   )ÚlistrB   ©rF   s    r-   ÚhistoryzAtlasProgressionService.historyQ   s   € å�D”MÑ"Ô"Ð"r,   r   c                ó*   — t          | j        ¦  «        S r(   )ÚlenrB   rL   s    r-   Útotal_maps_processedz,AtlasProgressionService.total_maps_processedU   s   € å�4”=Ñ!Ô!Ð!r,   Tr   Únode_idr   r   r   ÚwalletúOptional[Dict[str, int]]Ústash_itemsúOptional[List[Dict[str, Any]]]Úcurrent_goldr   c                ó(  — | j                              |¦  «        }|r|j        nd|› d�}|r|j        nd}| j                              ||¬¦  «         | j                              ¦   «         }	| j                              ¦   «         }
d}|r| j                             ¦   «         }| j         	                    ¦   «         }|pi }|pg }| j
                             |||¬¦  «        }|j        }|j        }| j        sd}d}d| _        n|| j        z
  }|| j        z
  }|| _        || _        |j        |j        |j        |j        d	œ}t+          ||||||d
         |d         t-          |	¦  «        |
d         |||||¬¦  «        }| j                             |¦  «         |S )uÃ  
        Xá»­ lÃ½ sá»± kiá»‡n hoÃ n thÃ nh báº£n Ä‘á»“:
        1. Cáº­p nháº­t tráº¡ng thÃ¡i Ä‘á»“ thá»‹ Atlas vÃ  kÃ­ch hoáº¡t Frontier Expansion.
        2. Náº¿u bonus_completed, tá»± Ä‘á»™ng phÃ¢n bá»• Ä‘iá»ƒm CÃ¢y Ná»™i Táº¡i tiáº¿p theo theo DAG.
        3. Ä�á»‹nh giÃ¡ tÃ i sáº£n rÃ²ng hiá»‡n táº¡i vÃ  tÃ­nh má»©c tÄƒng trÆ°á»Ÿng (Delta) so vá»›i map trÆ°á»›c.
        4. LÆ°u trá»¯ lá»‹ch sá»­ vÃ  tráº£ vá»� bÃ¡o cÃ¡o káº¿t quáº£.
        zUnknown Map (ú)é   )ÚbonusN)rR   rT   rV   r@   T)ú	Chaos Orbú
Divine OrbúMirror of KalandraÚGoldÚtotal_allocated_pointsÚcurrent_phaseÚcompletion_rate)r   r   r   r   r   r   r   r   r!   r"   r#   r$   r%   r&   )r8   Úget_nodeÚnameÚtierÚmark_node_completedÚget_frontier_nodesÚget_completion_statsr:   Úallocate_next_pointÚget_tree_statsr<   Úcalculate_net_worthÚtotal_net_worth_chaosÚtotal_net_worth_divinerE   rC   rD   Úliquid_chaosÚliquid_divineÚliquid_mirrorÚgold_balancer   rO   rB   Úappend)rF   rQ   r   rR   rT   rV   Únoder   r   Úfrontier_nodesÚcompletion_statsÚnewly_allocatedÚ
tree_statsÚwallet_dataÚ
stash_dataÚ	nw_reportÚcurrent_chaosÚcurrent_divineÚdelta_chaosÚdelta_diviner&   Úresults                         r-   Úon_map_completedz(AtlasProgressionService.on_map_completedY   sø  € ð  Ô×(Ò(¨Ñ1Ô1ˆØ $ÐD�4”9�9Ð*D¸'Ð*DÐ*DÐ*DˆØ $Ð+�4”9�9¨!ˆàÔ×,Ò,¨W¸OÐ,ÑLÔLÐLØÔ)×<Ò<Ñ>Ô>ˆØÔ+×@Ò@ÑBÔBÐð 7;ˆØð 	FØ"Ô/×CÒCÑEÔEˆOàÔ&×5Ò5Ñ7Ô7ˆ
ð �l ˆØ Ð& Bˆ
Ø$(Ô$<×$PÒ$PØØ"Ø%ð %Qñ %
ô %
ˆ	ð "Ô7ˆØ"Ô9ˆàÔ/ð 	HØˆKØˆLØ/3ˆDÔ,Ð,à'¨$Ô*DÑDˆKØ)¨DÔ,GÑGˆLà%2ˆÔ"Ø&4ˆÔ#ð #Ô/Ø#Ô1Ø"+Ô"9ØÔ*ð	
ð 
ˆõ +ØØØØ+Ø$3Ø'1Ð2JÔ'KØ)¨/Ô:Ý˜~Ñ.Ô.Ø!1Ð2CÔ!DØ$1Ø%3Ø"-Ø#/Ø'ð
ñ 
ô 
ˆð" 	Œ×Ò˜VÑ$Ô$Ð$Øˆr,   r~   c                ó  — ddddd|j         › d|j        › d|j        › d�d|j        rd	nd
› �d|j        › d�d|j        d›d�ddd|j        › d| j        j        › �d|j	        › �g}|j
        r@|j
        }|                     d|j        › d|j        › d|j        › d�d|j        › �g¦  «         n|                     d¦  «         |                     ddd|j        d›d|j        d›d�d|j        d›d |j        d›d�d!|j                             d"d#¦  «        › d$|j                             d%d#¦  «        › d&|j                             d'd#¦  «        › d(�d)|j                             d*d#¦  «        d+›d,�dg¦  «         d-                     |¦  «        S ).uJ   Ä�á»‹nh dáº¡ng bÃ¡o cÃ¡o tá»•ng káº¿t sau map chuáº©n Rule 5 (ASCII-safe).zN==============================================================================z6 [MO PHONG THUAT TOAN HEADLESS - KHONG PHAI LIVE GAME]zF BAO CAO TIEN TRINH ATLAS & PHAN THUONG HAU CAN (ATLAS REWARD SERVICE)z Map Vua Hoan Thanh   : [z] z (Tier rX   z Trang Thai Bonus      : zDAT BONUS (+1 Atlas Point)zKHONG CO BONUSz Node Bien Moi (Frontier): z maps tiep theo da san sangz Tien Do Atlas Graph   : z.1fú%zN------------------------------------------------------------------------------z3 TIEN TRINH CAY NOI TAI ATLAS (ATLAS PASSIVE TREE):z   * Tong diem da phan bo : z / z   * Giai doan cay hien tai: z"   * Diem vua mo khoa     : [Rank z (z     Hieu ung             : zF   * Diem vua mo khoa     : Khong co (Chua dat bonus hoac cay da full)z. THAM DINH TAI SAN RONG (NET WORTH VALUATION):z   * Tong tai san rong    : z,.1fz	 Chaos (~z.2fz Divine)z   * Tang truong map nay  : +z	 Chaos (+z   * Tien mat kha dung    : r[   r   z C | r\   z Div | r]   z Mirz   * Quy vang (Gold)      : r^   ú,z Goldú
)r   r   r   r   r   r!   r   r:   Útotal_nodesr   r   ÚextendÚpriority_orderrc   ÚcategoryÚstat_descriptionrq   r"   r#   r$   r%   r&   ÚgetÚjoin)rF   r~   ÚlinesÚps       r-   Úformat_reward_reportz,AtlasProgressionService.format_reward_report«   s¢  € ð ØDØTØØh¨Ô(:ÐhÐh¸f¼oÐhÐhÐV\ÔVeÐhÐhÐhØvÈÔH^Ð(tÐ(DÐ(DÐdtÐvÐvØ\¨&Ô*?Ð\Ð\Ð\ØJ¨Ô(CÐJÐJÐJÐJØØAØp¨6Ô+LÐpÐpÐQUÔQbÔQnÐpÐpØG¨FÔ,EÐGÐGð
ˆð Ô)ð 	cØÔ.ˆAØ�LŠLØ`°QÔ5EÐ`Ð`ÈÌÐ`Ð`ÐSTÔS]Ð`Ð`Ð`ØC¨qÔ/AÐCÐCðñ ô ð ð ð
 �LŠLÐaÑbÔbÐbà�ŠØØ<ð G¨6Ô+Ið  Gð  Gð  GÐY_ÔYxð  Gð  Gð  Gð  Gð D¨FÔ,Hð  Dð  Dð  DÐX^ÔXuð  Dð  Dð  Dð  Dð D¨6Ô+?×+CÒ+CÀKÐQRÑ+SÔ+Sð  Dð  DÐZ`ÔZn×ZrÒZrÐsð  BCñ  [Dô  [Dð  Dð  Dð  MSô  Ma÷  Meò  Með  fzð  |}ñ  M~ô  M~ð  Dð  Dð  DØW¨6Ô+?×+CÒ+CÀFÈAÑ+NÔ+NÐWÐWÐWÐWØð
ñ 	ô 	ð 	ð �yŠy˜ÑÔÐr,   úDict[str, Any]c           	     óT  — t          | j        ¦  «        }| j        j        }| j                             ¦   «         }| j                             ¦   «         }| j        r| j        d         j        nd}| j        }t          d||z
  ¦  «        }|||d         |d         |d         || j
        |dœS )uR   Tá»•ng káº¿t toÃ n bá»™ chu ká»³ cÃ y cuá»‘c ká»ƒ tá»« khi khá»Ÿi Ä‘á»™ng service.r   r@   Úcompletion_pctr`   ra   )Útotal_maps_completedÚtotal_passive_pointsÚtree_completion_pctr   Úatlas_graph_completion_pctr"   r#   Úcumulative_chaos_gain)rO   rB   r:   Úallocated_countri   r8   rg   r"   rC   ÚmaxrD   )rF   Ú
total_mapsÚtotal_pointsrv   Úgraph_statsÚinitial_chaosÚfinal_chaosÚchaos_gaineds           r-   Úget_aggregate_summaryz-AtlasProgressionService.get_aggregate_summaryÐ   s¹   € å˜œÑ'Ô'ˆ
ØÔ(Ô8ˆØÔ&×5Ò5Ñ7Ô7ˆ
ØÔ&×;Ò;Ñ=Ô=ˆàDHÄMÐZ˜œ aÔ(Ô@Ð@ÐWZˆØÔ0ˆÝ˜3 ¨mÑ ;Ñ<Ô<ˆð %/Ø$0Ø#-Ð.>Ô#?Ø",¨_Ô"=Ø*5Ð6GÔ*HØ'2Ø(,Ô(CØ%1ð	
ð 	
ð 		
r,   )NNN)r8   r9   r:   r;   r<   r=   )rH   rI   )rH   r   )TNNr   )rQ   r   r   r   rR   rS   rT   rU   rV   r   rH   r   )r~   r   rH   r   )rH   rŽ   )r1   r2   r3   r4   rG   ÚpropertyrM   rP   r   r�   rž   r+   r,   r-   r7   r7   9   sÔ   € € € € € ØgÐgð -1Ø37Ø;?ð	7ð 7ð 7ð 7ð 7ð* ð#ð #ð #ñ „Xð#ð ð"ð "ð "ñ „Xð"ð !%Ø+/Ø6:ØðPð Pð Pð Pð Pðd# ð # ð # ð # ðJ
ð 
ð 
ð 
ð 
ð 
r,   r7   N)r4   Ú
__future__r   Údataclassesr   r   r   Útypingr   r   r	   r
   Úsrc.assistant_tool.atlas.graphr   r   r   Ú+src.assistant_tool.atlas.atlas_tree_plannerr   r   r   Ú8src.assistant_tool.currency_exchange.net_worth_estimatorr   r   r   r7   r+   r,   r-   ú<module>r¦      su  ððð ð #Ð "Ð "Ð "Ð "Ð "à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ðOð Oð Oð Oð Oñ Oô Oñ „ðOð&k
ð k
ð k
ð k
ð k
ñ k
ô k
ð k
ð k
ð k
r,   