§
    KÊ©jŠ1  ã                   óŒ  — d Z ddlZddlZddlZddlZddlmZmZ ddlmZ ddl	m
Z
mZmZmZ ej        dk    rE	 ej                             dd¬	¦  «         ej                             dd¬	¦  «         n# e$ r Y nw xY w ee¦  «                             ¦   «         j        j        Zed
z  Zedz  Zedz  Zedz  Z ed¦  «        Zdeeef         fd„Z	 	 	 	 	 	 	 	 	 	 	 d,dededededed ed!ed"ed#ed$ed%ede
eef         fd&„Z d'e
eef         defd(„Z!d'e
eef         ddfd)„Z"d*„ Z#e$d+k    r ej%         e#¦   «         ¦  «         dS dS )-u  
AutoPOE2 - Character Data Structured Snapshotter & Evolution Tracker
=====================================================================
TrÃ­ch xuáº¥t vÃ  lÆ°u trá»¯ tráº¡ng thÃ¡i nhÃ¢n váº­t theo cáº¥u trÃºc dá»¯ liá»‡u chuáº©n (JSON & Markdown)
kÃ¨m timestamp chÃ­nh xÃ¡c, giÃºp AI Agent náº¯m báº¯t trá»�n váº¹n quÃ¡ trÃ¬nh nÃ¢ng cáº¥p, tiáº¿n hÃ³a nhÃ¢n váº­t
nhÆ° má»™t game thá»§ chuyÃªn nghiá»‡p.

TÃ i liá»‡u tham chiáº¿u:
- character_target/current_state.md
- character_target/build_endgame_plan.md
- poe2_production_Config.ini
é    N)ÚdatetimeÚtimezone)ÚPath)ÚDictÚAnyÚOptionalÚListÚwin32úutf-8Úreplace)ÚencodingÚerrorsÚcharacter_targetÚ	snapshotszCHARACTER_EVOLUTION.mdzcurrent_state.mdzUC:\Users\Admin\OneDrive\Documents\My Games\Path of Exile 2\poe2_production_Config.iniÚreturnc                  óÚ   — t          j        ¦   «                              ¦   «         } t          j        t          j        ¦  «        }|                      ¦   «         |                     d¦  «        fS )u5   Tráº£ vá»� (ISO 8601 Local with offset, ISO 8601 UTC)z%Y-%m-%dT%H:%M:%SZ)r   ÚnowÚ
astimezoner   ÚutcÚ	isoformatÚstrftime)Ú	now_localÚnow_utcs     ú3C:\Projects\AutoPOE2\tools\character_snapshotter.pyÚget_current_timestampsr   '   sP   € å”‘”×)Ò)Ñ+Ô+€IÝŒl�8œ<Ñ(Ô(€GØ×ÒÑ Ô  '×"2Ò"2Ð3GÑ"HÔ"HÐHÐHó    ÚBEONGUSIéZ   ÚMonkúMartial ArtistúForbidden Riteséi  éð   él  ÚMonkTempestFlurryÚMonkTempestBellÚcharacter_nameÚlevelÚ
class_nameÚ
ascendancyÚleagueÚcur_esÚmax_esÚcur_wardÚcur_manaÚcombo_builder_gemÚfinisher_gemc                 ó0  — t          ¦   «         \  }}d||| | › d�||||ddddœ	dd||d||||d	d
ddœdddd|	ddddœdddd|
dddœddddd d!d"d#œd$d%d&d'd(d)d*œd+d,d-d.d/d0d1d2œd3d4d5d6d7d8d*œd9d:d;d<d=d>d?d@œdAdBdCdDdEdFdGœdHœddIdJœdKdLdJœdMdNdJœdOdPdJœgdQdRdSdTœdUdVdWœdXœ	}|S )YuU   Táº¡o Ä‘á»‘i tÆ°á»£ng snapshot dá»¯ liá»‡u nhÃ¢n váº­t cÃ³ cáº¥u trÃºc chuáº©n má»±c.zautopoe2.character_snapshot/v1z#3653zChaos Inoculation (CI)zHP 1/1 (Chaos Immune)Ú6AA2213C)	ÚnameÚaccountÚclassr*   r(   r+   Údefense_typeÚlife_invariantÚclient_build_targeté   i|  é   éŒ   é“   )Úlife_currentÚlife_maxÚenergy_shield_currentÚenergy_shield_maxÚenergy_shield_in_combat_targetÚward_currentÚward_maxÚmana_currentÚmana_maxÚspirit_availableÚspirit_reservedÚ
spirit_maxÚQÚ0x51ÚCOMBO_BUILDERu   ChiÃªu TÃ­ch Combo LiÃªn HoÃ nÚ	IceStrikeé   ux   Ä�Ã²n Ä‘Ã¡nh tá»‘c Ä‘á»™ cao tÃ­ch lÅ©y tá»« 1 Ä‘áº¿n 4 Ä‘iá»ƒm Combo Points Ä‘á»ƒ chuáº©n bá»‹ kÃ­ch ná»• ChuÃ´ng BÃ£o.)ÚkeyÚvk_codeÚroleÚrole_viÚcurrent_gemÚprevious_gemÚtarget_combo_pointsÚdescriptionÚRÚ0x52ÚCOMBO_FINISHERu.   ChiÃªu KÃ­ch Ná»• / Káº¿t Liá»…u Diá»‡n Rá»™nguI   Báº®T BUá»˜C Ä�á»¦ 4 COMBO POINTS Tá»ª PHÃ�M Q HOáº¶C BOSS STAGGER >= 80%uv   Cáº¯m ChuÃ´ng BÃ£o xuá»‘ng tÃ¢m Ä‘iá»ƒm Boss / quÃ¡i Rare Ä‘á»ƒ kÃ­ch ná»• sÃ³ng xung kÃ­ch LÃ´i Ä�iá»‡n cá»±c Ä‘áº¡i.)rO   rP   rQ   rR   rS   ÚprerequisiterV   Úmouse_rightÚ
VK_RBUTTONÚSUSTAINED_AOE_BUFFu%   ChiÃªu Xoay BÃ£o LÃ´i / Duy TrÃ¬ BuffÚMonkChargedStaffé(   u~   TÃ­ch tá»¥ lÃ´i nÄƒng vÃ  xoay bÃ£o quanh thÃ¢n gáº­y, duy trÃ¬ sÃ¡t thÆ°Æ¡ng AoE liÃªn tá»¥c vÃ  sáº¡c thanh Swirling Spiral.)rO   rP   rQ   rR   rS   Úbuff_duration_secrV   Úmouse_middleÚ
VK_MBUTTONÚGAP_CLOSER_DEBUFFu&   ChiÃªu Ã�p SÃ¡t & Yá»ƒm BÃ¹a Suy Yáº¿uÚDruidWolfLeapAttackuz   HÃ³a SÃ³i nháº£y Ã¡p sÃ¡t tá»« xa vÃ  cast bÃ¹a chÃº (Mark/Debuff) khiáº¿n Boss nháº­n thÃªm lÆ°á»£ng lá»›n sÃ¡t thÆ°Æ¡ng.)rO   rP   rQ   rR   rS   rV   ÚTÚ0x54ÚPRE_BUFF_INITIATIONu%   ChiÃªu TÄƒng Ná»™ TrÆ°á»›c Giao TranhÚDruidBearWarcryé   uW   Gáº§m Bear Warcry láº¥y tá»©c thÃ¬ 30 Rage trÆ°á»›c khi giao chiáº¿n quÃ¡i Rare / Boss.)rO   rP   rQ   rR   rS   Úrage_grantedrV   Ú
mouse_leftÚ
VK_LBUTTONÚPRIMARY_CLEARu   ChiÃªu Dá»�n QuÃ¡i CÆ¡ Báº£nÚ#MartialArtistMantraofIllusionsSkillud   PhÃ³ng áº£o áº£nh phÃ¢n thÃ¢n dá»�n quÃ¡i nhá»�, duy trÃ¬ di chuyá»ƒn linh hoáº¡t khÃ´ng tá»‘n mana.ÚspaceÚVK_SPACEÚMOBILITY_IFRAMEu#   ChiÃªu LÄƒn NÃ© Báº¥t Tá»­ (Iframe)Ú	DodgeRollu1   Nguy cÆ¡ nháº­n Ä‘Ã²n chÃ­ máº¡ng hoáº·c ES < 70%u_   Há»§y animation Ä‘Ã²n Ä‘Ã¡nh láº­p tá»©c, lÃ¹i vá»� cá»± ly an toÃ n Ä‘á»ƒ ES tá»± sáº¡c láº¡i.)rO   rP   rQ   rR   rS   Útrigger_conditionrV   ÚFÚ0x46ÚSKILL_8u'   Ká»¹ NÄƒng Thá»© 8 Cá»§a NgÆ°á»�i ChÆ¡iÚBoundSkill8u^   TUYá»†T Ä�á»�I Cáº¤M Gá»¬I PHÃ�M F Ä�á»‚ TÆ¯Æ NG TÃ�C THáº¾ GIá»šI (INV-KEY-NO-F-FOR-INTERACT))rO   rP   rQ   rR   rS   Únote)Úslot_QÚslot_RÚslot_RMBÚslot_MMBÚslot_TÚslot_LMBÚ
slot_SPACEÚslot_Fz.Maximum Life becomes 1, Immune to Chaos Damage)r4   ÚeffectzHollow Form Techniquez9Clones Whirling Assault from Hollow Focus / Power ChargeszRunic Meridiansz/Enhanced elemental conversion & staff resonancezWay of the StonefistzNTransforms gloves (Lochtonial Caress) to refund Power/Frenzy/Endurance chargesz#Wrath Branch, Sinister QuarterstaffÚQuarterstaffzBIncreased Attack Speed, Lightning Damage, Energy Shield per Charge)r4   ÚtypeÚ
stat_focusÚENDGAME_T16_MAPPINGu¢   Chuyá»ƒn Ä‘á»•i ChiÃªu TÃ­ch Combo (Q) tá»« Ice Strike sang Tempest Flurry giÃºp tÄƒng tá»‘c Ä‘á»™ tÃ­ch 4 Ä‘iá»ƒm Combo Points Ä‘á»ƒ kÃ­ch ná»• ChuÃ´ng BÃ£o (R).)Úprogression_stageÚrecent_upgrade_note)	Úschema_versionÚtimestamp_localÚtimestamp_utcÚ	characterÚvitalsÚskill_loadoutÚkeystones_and_ascendancyÚequipped_weaponÚevolution_context)r   )r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   Ú	iso_localÚiso_utcÚsnapshots                 r   Úbuild_character_snapshotr”   .   s-  € õ 0Ñ1Ô1Ñ€Iˆwð ;Ø$Ø à"Ø(Ð/Ð/Ð/ØØ$ØØØ4Ø5Ø#-ð

ð 

ð ØØ%+Ø!'Ø.2Ø$Ø Ø$Ø Ø !Ø"Øð
ð 
ð  Ø!Ø'Ø;Ø0Ø +Ø'(ð  Zð	ð 	ð Ø!Ø(ØKØ+Ø kð  Xðð ð %Ø'Ø,ØBØ1Ø%'ð  `ðð ð &Ø'Ø+ØCØ4ð  \ðð ð Ø!Ø-ØBØ0Ø "Øxðð ð $Ø'Ø'Ø9ØDð  Fðð ð Ø%Ø)Ø@Ø*Ø%Xð  Aðð ð Ø!Ø!ØDØ,Øxðð ðG
ð G
ðT 1ØJðð ð
 0ØUðð ð
 *ØKðð ð
 /Øjðð ð%
ð& :Ø"Ø^ð
ð 
ð "7ð $Hð
ð 
ðy@ ð @ €HðB €Or   r“   c                 óx  — t                                dd¬¦  «         t          j        ¦   «                              d¦  «        }| d         d         }d|› d|› d�}t           |z  }t          |d	d
¬¦  «        5 }t          j        | |dd¬¦  «         ddd¦  «         n# 1 swxY w Y   t          d|› �d¬¦  «         |S )uL   LÆ°u snapshot vÃ o thÆ° má»¥c snapshots/ kÃ¨m timestamp Ä‘á»‹nh dáº¡ng file.T)ÚparentsÚexist_okz%Y%m%d_%H%M%Sr‹   r4   Úchar_Ú_z.jsonÚwr   ©r   é   F)ÚindentÚensure_asciiNu=   [Snapshotter] >> Ä�Ã£ lÆ°u snapshot dá»¯ liá»‡u nhÃ¢n váº­t: ©Úflush)	ÚSNAPSHOTS_DIRÚmkdirr   r   r   ÚopenÚjsonÚdumpÚprint)r“   Ú
ts_compactÚ	char_nameÚfilenameÚfilepathÚfs         r   Úsave_snapshotr¬   Â   s	  € å×Ò ¨tÐÑ4Ô4Ð4Ý”‘”×(Ò(¨Ñ9Ô9€JØ˜Ô% fÔ-€IØ4�yÐ4Ð4 :Ð4Ð4Ð4€HÝ˜xÑ'€Hå	ˆh˜ gÐ	.Ñ	.Ô	.ð =°!ÝŒ	�(˜A a°eÐ<Ñ<Ô<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =õ 
Ð
TÈ(Ð
TÐ
TÐ\`ÐaÑaÔaÐaØ€Os   Á6BÂBÂ"Bc                 ó   — | d         }| d         }| d         }| d         }| d         }d                      g d‘|› ‘d‘|d	         › ‘d
‘|d         › ‘d‘|d         › ‘d‘|d         › ‘d‘|d         › ‘d‘|d         › ‘d‘|d         › ‘d‘|d         › ‘d‘|d         › ‘d‘|d         › ‘d‘|d         › ‘d‘|d         › ‘d‘|d         d          › ‘d!‘|d                              d"d#¦  «        › ‘d$‘|d%         d          › ‘d&‘|d'         d          › ‘d(‘|d)         d          › ‘d*‘|d+         d          › ‘d,‘|d-         d          › ‘d.‘|d/         d          › ‘d0‘| d1         d2         › ‘d3‘¦  «        }t                               ¦   «         sd4}||z   }n�t	          t          d5d6¬7¦  «        5 }	|	                     ¦   «         }
d8d8d8¦  «         n# 1 swxY w Y   d9|
v rA|
                     d9d:¦  «        }|d;         d<z   |z   |d:                              d=¦  «        z   }n|
d>z   |z   }t	          t          d?d6¬7¦  «        5 }	|	                     |¦  «         d8d8d8¦  «         n# 1 swxY w Y   t          d@t          › �dA¬B¦  «         d8S )CuC   Ghi nháº­t kÃ½ tiáº¿n hÃ³a nhÃ¢n váº­t vÃ o CHARACTER_EVOLUTION.md.r‰   r‹   rŒ   r�   r�   Ú u   
### [Má»�C TIáº¾N HÃ“A: u   ] â€” Level r(   ú r*   z (r7   u   )
- **NhÃ¢n váº­t**: `r4   z` | **League**: `r+   u   `
- **Há»“ Sinh Tá»“n**: ES `r@   ú/rA   z
` | Ward `rC   z
` | Mana `rE   z
` | Life `r>   r?   u*   ` (CI 100% Chaos Immune)
- **VÅ© khÃ­**: `uX   `
- **Báº£ng Ã�nh Xáº¡ Vai TrÃ² Ká»¹ NÄƒng (Skill Roles)**:
  - **[Q] COMBO_BUILDER**: `ry   rS   u   ` *(trÆ°á»›c: `rT   zN/AuN   `)* $\rightarrow$ TÃ­ch lÅ©y 1â€“4 Combo Points.
  - **[R] COMBO_FINISHER**: `rz   up   ` $\rightarrow$ Cáº¯m ChuÃ´ng BÃ£o LÃ´i diá»‡n rá»™ng khi Ä‘á»§ 4 Ä‘iá»ƒm combo.
  - **[RMB] SUSTAINED_BUFF**: `r{   uH   ` $\rightarrow$ Duy trÃ¬ buff xoay bÃ£o 40s.
  - **[MMB] GAP_CLOSER**: `r|   uU   ` $\rightarrow$ HÃ³a SÃ³i nháº£y Ã¡p sÃ¡t & gÃ¡n bÃ¹a debuff.
  - **[T] PRE_BUFF**: `r}   uB   ` $\rightarrow$ Gáº§m Warcry láº¥y 30 Rage.
  - **[LMB] CLEAR**: `r~   uV   ` $\rightarrow$ Dá»�n quÃ¡i nhá»� khÃ´ng tá»‘n tÃ i nguyÃªn.
  - **[Space] IFRAME**: `r   uV   ` $\rightarrow$ Dodge Roll há»§y animation thoÃ¡t hiá»ƒm.
- **Ghi chÃº nÃ¢ng cáº¥p**: r�   r‡   z
---
uL  # NHáº¬T KÃ� TIáº¾N HÃ“A & NÃ‚NG Cáº¤P NHÃ‚N Váº¬T (CHARACTER EVOLUTION JOURNAL)
> TÃ i liá»‡u cáº¥u trÃºc lÆ°u váº¿t trá»�n váº¹n hÃ nh trÃ¬nh tiáº¿n hÃ³a nhÃ¢n váº­t tá»« Leveling Ä‘áº¿n Endgame T16.
> Má»—i má»‘c nÃ¢ng cáº¥p (Gems, Gear, Passives, Vitals) Ä‘Æ°á»£c AI Agent ghi nháº­n vÃ  há»�c há»�i nhÆ° má»™t Pro Player.

---
Úrr   r›   Nz---r:   r   z---
z
-ú
rš   u;   [Snapshotter] >> Ä�Ã£ cáº­p nháº­t Nháº­t KÃ½ Tiáº¿n HÃ³a: TrŸ   )
ÚjoinÚgetÚEVOLUTION_MDÚexistsr£   ÚreadÚsplitÚlstripÚwriter¦   )r“   Úts_strÚcharrŒ   ÚskillsÚweaponÚentryÚheaderÚcontentr«   Úold_contentÚpartss               r   Úupdate_evolution_journalrÄ   Ñ   sÝ  € àÐ'Ô(€FØ�KÔ €DØ�hÔ€FØ�oÔ&€FØÐ'Ô(€Fð÷ ò ð ð ð Øðð ð ð Ø-1°'¬]ðð ð ð Ø=AÀ,Ô=Oðð ð ð ØSWÐXfÔSgðð ð ð à˜&”\ðð ð ð à48¸´Nðð ð ð ð #Ð#:Ô;ðð ð ð ð ?EÐEXÔ>Yðð ð ð ð flÐlzÔe{ðð ð ð ð HNð  O]ô  H^ðð ð ð ð jpð  qô  j@ðð ð ð ð CIð  JTô  CUðð ð ð ð ˜”.ð	ð ð ð ð $ HÔ-¨mÔ<ðð ð ð ð NTÐT\ÔM]×MaÒMaÐbpÐrwÑMxÔMxðð ð ð ð % XÔ.¨}Ô=ðð ð ð ð !' zÔ 2°=Ô Aðð ð ð ð # :Ô.¨}Ô=ðð ð ð ð ˜xÔ(¨Ô7ðð ð ð ð ˜jÔ)¨-Ô8ðð ð ð ð ! Ô.¨}Ô=ðð ð ð ð &Ð&9Ô:Ð;PÔQðð ð ð ñ ô €Eõ" ×ÒÑ Ô ð 1ðˆð ˜5‘.ˆˆå•, ¨gÐ6Ñ6Ô6ð 	#¸!ØŸ&š&™(œ(ˆKð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð �KÐÐØ×%Ò% e¨QÑ/Ô/ˆEØ˜A”h Ñ(¨5Ñ0°5¸´8·?²?À5Ñ3IÔ3IÑIˆGˆGà! DÑ(¨5Ñ0ˆGå	�l˜C¨'Ð	2Ñ	2Ô	2ð °aØ	�Š�ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ 
Ð
VÍÐ
VÐ
VÐ^bÐcÑcÔcÐcÐcÐcs$   Æ(G	Ç	GÇGÈ8IÉIÉ!Ic                  óî   — t          d¦  «         t          d¦  «         t          d¦  «         t          dddddddd	d
dd¬¦  «        } t          | ¦  «        }t          | ¦  «         t          d¦  «         dS )Nz9=========================================================z9   AutoPOE2 - Character Data Structured Snapshotter      r   r   r   r    r!   r"   r#   r$   r%   r&   )r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   uL   [Snapshotter] âœ… HoÃ n táº¥t snapshot dá»¯ liá»‡u nhÃ¢n váº­t thÃ nh cÃ´ng!r   )r¦   r”   r¬   rÄ   )r“   Ú
saved_paths     r   ÚmainrÇ     s™   € Ý	Ð
EÑFÔFÐFÝ	Ð
EÑFÔFÐFÝ	Ð
EÑFÔFÐFõ (Ø!ØØØ#Ø ØØØØØ-Ø&ðñ ô €Hõ ˜xÑ(Ô(€Jõ ˜XÑ&Ô&Ð&å	Ð
XÑYÔYÐYØˆ1r   Ú__main__)r   r   r   r    r!   r"   r"   r#   r$   r%   r&   )&Ú__doc__ÚosÚsysr¤   Útimer   r   Úpathlibr   Útypingr   r   r   r	   ÚplatformÚstdoutÚreconfigureÚstderrÚ	ExceptionÚ__file__ÚresolveÚparentÚWORKSPACE_ROOTÚCHARACTER_TARGET_DIRr¡   rµ   ÚCURRENT_STATE_MDÚPOE2_CONFIG_PATHÚtupleÚstrr   Úintr”   r¬   rÄ   rÇ   Ú__name__Úexit© r   r   ú<module>rá      sÜ  ððð ð 
€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à„<�7ÒÐðØŒ
×Ò¨¸	ÐÑBÔBÐBØŒ
×Ò¨¸	ÐÑBÔBÐBÐBøØð ð ð Øˆðøøøð ��h‘”×'Ò'Ñ)Ô)Ô0Ô7€Ø%Ð(:Ñ:Ð Ø$ {Ñ2€Ø#Ð&>Ñ>€Ø'Ð*<Ñ<Ð Ø�4ÐpÑqÔqÐ ðI  c¨3 h¤ð Ið Ið Ið Ið %ØØØ&Ø#ØØØØØ0Ø)ðQð QØðQàðQð ðQð ð	Qð
 ðQð ðQð ðQð ðQð ðQð ðQð ðQð 
ˆ#ˆsˆ(„^ðQð Qð Qð Qðh˜D  c œNð ¨tð ð ð ð ð.d t¨C°¨H¤~ð .d¸$ð .dð .dð .dð .dðbð ð ð< ˆzÒÐØ€C„HˆTˆT‰VŒVÑÔÐÐÐð Ðs   ¹8A2 Á2A:Á9A: