§
    ´­jN  ã                  ó¦   — d Z ddlmZ ddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
mZmZmZmZ ddlmZmZ h d£Zg d	¢Zdd„Z	 	 	 ddd„Z	 	 	 ddd„ZdS )u¥  AutoPOE2 - Dynamic Pickit Filter Updater (Market-Driven Looting).

Cáº­p nháº­t Ä‘á»™ng danh sÃ¡ch nháº·t Ä‘á»“ trong pickup_filter.json dá»±a trÃªn giÃ¡ thá»‹ trÆ°á»�ng:
Chá»‰ cho phÃ©p nháº·t cÃ¡c váº­t pháº©m cÃ³ giÃ¡ trá»‹ >= 1.0 Chaos Orb.
Tá»± Ä‘á»™ng hot-reload vÃ o C++ Core 120Hz mÃ  khÃ´ng gÃ¢y giÃ¡n Ä‘oáº¡n combat loop.
TuÃ¢n thá»§ Rule 1, Rule 4 (Kiáº¿n TrÃºc Module HÃ³a), Rule 5 (100% Dá»¯ Liá»‡u Tháº­t).
é    )ÚannotationsN)Údatetime)ÚPath)ÚAnyÚDictÚListÚOptionalÚSetÚTuple)ÚMarketPriceFetcherÚDEFAULT_CACHE_PATH>   úVaal Orbú	Chaos Orbú	Regal Orbú
Divine OrbúExalted OrbúOrb of AlchemyúOrb of AnnulmentúMirror of KalandraúGreater Jeweller's OrbúPerfect Jeweller's OrbÚGoldÚWaystone)zscroll of wisdomzportal scrollz	iron ringzrustic sashz	crude bowzcrude staffzdriftwood wandz
torn bootsztransmutation shardzaugmentation shardzartificer's shardÚreturnú	List[str]c                 óÐ   — t          t          ¦  «                             ¦   «         j        j        j        j        } t	          | dz  dz  ¦  «        t	          | dz  dz  dz  ¦  «        gS )u>   Láº¥y danh sÃ¡ch Ä‘Æ°á»�ng dáº«n pickup_filter.json cáº§n ghi.Údatazpickup_filter.jsonÚbinÚRelease)r   Ú__file__ÚresolveÚparentÚstr)Úroots    úHC:\Projects\AutoPOE2\src\assistant_tool\pickit\dynamic_pickit_updater.pyÚget_default_output_pathsr&   6   s^   € å•‰>Œ>×!Ò!Ñ#Ô#Ô*Ô1Ô8Ô?€DåˆD�6‰MÐ0Ñ0Ñ1Ô1ÝˆD�5‰L˜9Ñ$Ð';Ñ;Ñ<Ô<ðð ó    ç      ð?FÚ	min_chaosÚfloatÚfetcherúOptional[MarketPriceFetcher]Úforce_refreshÚboolú'Tuple[Dict[str, float], Dict[str, Any]]c                óŽ  — |pt          ¦   «         }d}|s|                     d¬¦  «        }|s<	 |                     ¦   «         }n&# t          $ r |                     d¬¦  «        }Y nw xY w|rd|vri i fS i }|d                              ¦   «         D ]3\  }}t          |                     dd¦  «        ¦  «        }|| k    r|||<   Œ4||fS )u[   Truy xuáº¥t danh sÃ¡ch cÃ¡c váº­t pháº©m cÃ³ giÃ¡ trá»‹ >= min_chaos tá»« cache hoáº·c API.Ni  )Úmax_age_secondsÚitemsÚchaos_valueg        )r   Ú
load_cacheÚfetch_market_pricesÚ	Exceptionr2   r*   Úget)r)   r+   r-   Úmarket_dataÚvaluableÚnameÚinfoÚ	chaos_vals           r%   Úget_valuable_market_itemsr=   ?   s  € ð Ð-Õ+Ñ-Ô-€Gà€KØð ?Ø×(Ò(¸Ð(Ñ>Ô>ˆàð Cð	CØ!×5Ò5Ñ7Ô7ˆKˆKøÝð 	Cð 	Cð 	Cà!×,Ò,¸TÐ,ÑBÔBˆKˆKˆKð	Cøøøð ð ˜'¨Ð4Ð4Ø�2ˆvˆà!#€HØ! 'Ô*×0Ò0Ñ2Ô2ð 'ð '‰
ˆˆdÝ˜$Ÿ(š( =°#Ñ6Ô6Ñ7Ô7ˆ	Ø˜	Ò!Ð!Ø&ˆH�T‰Nøà�[Ð Ð s   ®A Á A&Á%A&Úoutput_pathsúOptional[List[str]]úDict[str, Any]c                óÈ  — |pt          ¦   «         }t          ¦   «         }t          | ||¬¦  «        \  }}t          t          ¦  «        }|                     ¦   «         D ]}|                     |¦  «         Œh d£}	|                     ¦   «         D ]<}t          |¦  «        dk    r'|	                     |                     ¦   «         ¦  «         Œ=dt          j
        ¦   «                              d¦  «        d| › d�|                     dd	¦  «        | t          |¦  «        d
t          t          |	¦  «        ¦  «        t          t          |¦  «        ¦  «        t          t          ¦  «        dœ
}
t!          j        |
d
d¬¦  «        }g }|D ]~}	 t%          |¦  «        }|j                             dd¬¦  «         |                     |d¬¦  «         |                     t/          |¦  «        ¦  «         Œh# t0          $ r
}Y d}~Œwd}~ww xY wt          |                     ¦   «         d„ d¬¦  «        dd…         }d|                     dd	¦  «        t          |¦  «        t          |¦  «        | ||dœS )u¼  Cáº­p nháº­t tá»‡p pickup_filter.json tá»« dá»¯ liá»‡u thá»‹ trÆ°á»�ng vÃ  thÃ´ng bÃ¡o hot-reload.

    Args:
        min_chaos: NgÆ°á»¡ng giÃ¡ trá»‹ tá»‘i thiá»ƒu (máº·c Ä‘á»‹nh: 1.0 Chaos).
        output_paths: Danh sÃ¡ch file Ä‘Ã­ch cáº§n cáº­p nháº­t.
        force_refresh: Báº¯t buá»™c gá»�i API má»›i bá»� qua cache.

    Returns:
        Dict tÃ³m táº¯t káº¿t quáº£ (sá»‘ lÆ°á»£ng item Ä‘Æ°á»£c thÃªm, top giÃ¡ trá»‹, file paths).
    )r)   r+   r-   >   ú	soul coreÚgoldÚomenÚvaalÚannulÚchaosÚexaltÚdivineÚmirrorÚtabletÚessenceÚcatalystÚjewellerÚwaystoneÚ	distilledÚdistillationé#   zautopoE2.pickup_filter.v1z%d/%m/%Y %H:%M:%SÚmarket_sync_min_Ú_chaosÚleagueÚUnknowné   )
ÚschemaÚgenerated_atÚ
source_ipdÚmarket_leagueÚmin_chaos_thresholdÚtotal_valuable_itemsÚpickup_all_above_rarityÚname_substringsÚexact_typesÚreject_name_substringsF)ÚindentÚensure_asciiT)ÚparentsÚexist_okzutf-8)ÚencodingNc                ó   — | d         S )Né   © )Úxs    r%   ú<lambda>z2update_pickit_filter_from_market.<locals>.<lambda>ž   s
   € ¸aÀ¼d€ r'   )ÚkeyÚreverseé   Úsuccess)ÚstatusrU   Útotal_items_in_filterÚvaluable_items_countr\   Útop_valuable_samplesÚwritten_files)r&   r   r=   ÚsetÚBASELINE_ALWAYS_PICKÚkeysÚaddÚlenÚlowerr   ÚnowÚstrftimer7   ÚsortedÚlistÚBASELINE_REJECT_SUBSTRINGSÚjsonÚdumpsr   r"   ÚmkdirÚ
write_textÚappendr#   r6   r2   )r)   r>   r-   Útargetsr+   Úvaluable_itemsr8   Úall_exact_typesr:   r_   Úfilter_contentÚ
json_bytesrt   ÚpÚtarget_pathÚeÚ
sorted_tops                    r%   Ú update_pickit_filter_from_marketrŽ   ^   s•  € ð Ð8Õ6Ñ8Ô8€GÝ Ñ"Ô"€GÝ";Ø W¸Mð#ñ #ô #Ñ€N�Kõ
 !$Õ$8Ñ 9Ô 9€OØ×#Ò#Ñ%Ô%ð "ð "ˆØ×Ò˜DÑ!Ô!Ð!Ð!ð!ð !ð !€Oð ×#Ò#Ñ%Ô%ð .ð .ˆÝˆt‰9Œ9˜Š?ˆ?Ø×Ò §
¢
¡¤Ñ-Ô-Ð-øð .Ý œ™œ×/Ò/Ð0CÑDÔDØ:¨Ð:Ð:Ð:Ø$Ÿš¨°9Ñ=Ô=Ø(Ý # NÑ 3Ô 3Ø#$Ý!¥$ Ñ"7Ô"7Ñ8Ô8Ý�d ?Ñ3Ô3Ñ4Ô4Ý"(Õ)CÑ"DÔ"Dðð €Nõ ”˜N°1À5ÐIÑIÔI€JØ€MØð ð ˆð	Ý˜q™'œ'ˆKØÔ×$Ò$¨T¸DÐ$ÑAÔAÐAØ×"Ò" :¸Ð"Ñ@Ô@Ð@Ø× Ò ¥ [Ñ!1Ô!1Ñ2Ô2Ð2Ð2øÝð 	ð 	ð 	ØˆDˆDˆDˆDøøøøð	øøøõ ˜×,Ò,Ñ.Ô.°N°NÈDÐQÑQÔQÐRTÐSTÐRTÔU€Jð Ø—/’/ (¨IÑ6Ô6Ý!$ _Ñ!5Ô!5Ý # NÑ 3Ô 3Ø(Ø *Ø&ðð ð s   ÆA$G(Ç(
G<Ç7G<)r   r   )r(   NF)r)   r*   r+   r,   r-   r.   r   r/   )r)   r*   r>   r?   r-   r.   r   r@   )Ú__doc__Ú
__future__r   r€   Úosr   Úpathlibr   Útypingr   r   r   r	   r
   r   Ú.src.assistant_tool.pickit.market_price_fetcherr   r   rv   r   r&   r=   rŽ   ri   r'   r%   ú<module>r•      sC  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ðð ð Ð ð ð ð Ð ðð ð ð ð Ø,0Øð!ð !ð !ð !ð !ð@ Ø(,ØðJð Jð Jð Jð Jð Jð Jr'   