+
    äÍjZ  ã                   ó  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtH	t	 ^ RI
t
Rt]P                  P                  ]R4      t]P                  ! 4       P!                  R4      tRt]P&                  R,           F(  t]R<9   d   ]tK  ]P+                  4       '       g   K&  ]tK*  	  ]]R	8X  d   R
MR,           t]]R	8X  d   RMR,           t]P                  P1                  R4      t]! ]RR7      P7                  4       t]P:                  ! R]4      t]P:                  ! R]4      tRt Rt!]'       g   ]"! R4       ]PF                  ! ^4       Rt$]
PJ                  ! 4       t&]&PN                  PQ                  R]$RR/4       Rt)R t*R t+]! ]P                  P                  ]]4      RR7       U u. uF+  q PY                  4       '       g   K  ]P[                  V 4      NK-  	  up t.]"! R]]]/! ].4      3,          4       ]P                  ! 4       ]	! ^-R7      ,
          P!                  R4      t0]Pb                  ! R 4      t2. t3]P                  Pi                  ]P                  P                  ]]4      4      '       d5   ]Pj                  ! ]! ]P                  P                  ]]4      RR7      4      t3]3 Uu0 uF<  p]6! VPo                  R!4      ]84      '       g   K#  R"VR!,          9  g   K3  VR#,          kK>  	  upt9. t:]R	8X  d   R$M^Èt;]. F¤  t<]<R%,          P{                  R&4      '       d   ]:P}                  ]<4       K4  ]<R%,          R'8X  d2   ]2P;                  ]<R(,          4      '       d   ]:P}                  ]<4       Ks  ]<R%,          P{                  R=4      '       g   K“  ]:P}                  ]<4       K¦  	  ]/! ]:4      t?]: Uu. uF  qR#,          ]99  g   K  VNK  	  upR]; t:]?]/! ]:4      8w  d   ]"! R)]?]/! ]:4      ,
          ,          4       ]"! R*]/! ]:4      ]@! R+ ]: 4       4      ]@! R, ]: 4       4      ]@! R- ]: 4       4      3,          4       ]:'       g   ]"! R.4       ]A! ^ 4      h]P
                  ! 4       tB]! ^R/7      ;_uu_ 4       tC]D! ]CP‹                  ]+]:4      4      tFRRR4       ]G! ]:]F4       F  w  tHtI]I]HR!&   K  	  ]@! R0 ]F 4       4      tJ]: UUUu. uF/  q"P]                  4        UUu/ uF  w  r4VR18w  g   K  W4bK  	  uppNK1  	  uppptK]3 Uu0 uF  qR#,          kK  	  uptL]3]K Uu. uF  qUR#,          ]L9  g   K  VNK  	  up,           tM]Pœ                  ! ]M]! ]P                  P                  ]]4      R2RR7      R3^R47       ]"! R5]/! ]M4      ]/! ]34      ]/! ]M4      ]/! ]34      ,
          3,          4       ]"! R6]J]/! ]:4      ]P
                  ! 4       ]B,
          3,          4       ]"! R7]P                  P                  ]]4      4       ]D! ]G! ]:]F4      4      R8,           F?  w  tHtI]"! R9]HR(,          R:,          4       ]"! ]Pž                  ! ]IR3^R47      R;,          4       KA  	  R# u up i u upi u upi   + '       g   i     ELÝ; iu uppi u upppi u upi u upi )>u¼  è¡Œä¸šä¿¡æ�¯ v0.1 Â· å¢žå¼ºå™¨ï¼šé€�æ�¡æŠ“æ­£æ–‡ â†’ DeepSeek æ��ç‚¼äº”è¦�ç´ ã€‚

è¾“å…¥ï¼šæ•°æ�®/market_intel/runs/<date>_items.jsonl
è¾“å‡ºï¼šæ•°æ�®/market_intel/runs/<date>_enriched.jsonlï¼ˆæ¯�æ�¡è¿½åŠ  äº”è¦�ç´  å­—æ®µï¼‰

å¼•æ“Žï¼šDeepSeekï¼ˆconfig.yaml å�– keyï¼Œä¸�è�½ç›˜æ‰“å�°ï¼‰ï¼›å¹¶å�‘ 4ï¼›å¤±è´¥é‡�è¯• 1 æ¬¡ã€‚
è¦�ç‚¹å�£å¾„ï¼šæ—¶é—´ / åœ°ç‚¹ / äººç‰©æˆ–ä¸»ä½“ / äº‹ä»¶ / å…³é”®äº‹é¡¹ï¼›ä»…ä¾�æ�®æ­£æ–‡ï¼Œç¼ºé¡¹å†™ã€Œæœªæ��å�Šã€�ã€‚
N)ÚThreadPoolExecutor)ÚdatetimeÚ	timedeltau0   /Users/liuxinyuan/Desktop/Hermesè¾“å‡º-å·¥ä½œç±»u   æ•°æ�®/market_intel/runsz%Y%m%dÚdaily:é   NNÚfirstz_items_first.jsonlz_items.jsonlz_enriched_first.jsonlz_enriched.jsonlz%~/.hermes/profiles/zone-b/config.yamlzutf-8)Úencodingz(base_url:\s*(https://api\.deepseek\.com)zapi_key:\s*(sk-[A-Za-z0-9]+)z)https://api.deepseek.com/chat/completionszdeepseek-flashu   â�Œ æœªå�–åˆ° API keyzuMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36z
User-AgentzAccept-Languagezzh-CN,zh;q=0.9u¬  ä½ æ˜¯äº§ä¸šæƒ…æŠ¥åˆ†æž�å‘˜ã€‚è¯·å�ªä¾�æ�®ä¸‹é�¢çš„æ­£æ–‡ï¼Œæ��ç‚¼è¿™æ�¡ä¿¡æ�¯çš„æ ¸å¿ƒè¦�ç‚¹ã€‚
è¦�æ±‚ï¼š
1. ä¸¥æ ¼ä¾�æ�®æ­£æ–‡ï¼Œä¸�å¾—æŽ¨æµ‹ã€�ä¸�å¾—è¡¥å……æ­£æ–‡ä»¥å¤–çš„çŸ¥è¯†ï¼›æ­£æ–‡æ²¡æœ‰çš„å†™ã€Œæœªæ��å�Šã€�ã€‚
2. è¾“å‡º JSONï¼ˆä¸�è¦�ä»»ä½•å¤šä½™æ–‡å­—ï¼‰ï¼Œå­—æ®µï¼š
{"æ—¶é—´":"","åœ°ç‚¹":"","äººç‰©":"","ä¸»ä½“":"","äº‹ä»¶":"","å…³é”®äº‹é¡¹":"","ä¸Žæˆ‘æ–¹å…³è�”":""}
3. ã€Œæ—¶é—´ã€�å°½é‡�ç²¾ç¡®åˆ°æ—¥ï¼›ã€Œåœ°ç‚¹ã€�å†™å›½å®¶/åŸŽå¸‚æˆ–"çº¿ä¸Š"ï¼›ã€Œäººç‰©ã€�å†™è¢«æ��åˆ°çš„äººå��ä¸Žè�ŒåŠ¡ï¼ˆæ²¡æœ‰åˆ™æœªæ��å�Šï¼‰ï¼›
ã€Œä¸»ä½“ã€�å†™æ¶‰äº‹æœºæž„/å“�ç‰Œï¼›ã€Œäº‹ä»¶ã€�ä¸€å�¥è¯�ï¼ˆâ‰¤40 å­—ï¼‰ï¼›ã€Œå…³é”®äº‹é¡¹ã€�ç”¨ã€Œï¼›ã€�åˆ†éš” 2â€“4 æ�¡è¦�ç‚¹ï¼ˆæ¯�æ�¡ â‰¤30 å­—ï¼‰ï¼›
ã€Œä¸Žæˆ‘æ–¹å…³è�”ã€�= å¯¹åˆ†å­�è¯Šæ–­åŽŸæ–™ä¾›åº”å•†ï¼ˆé…¶/é¢„æ··æ¶²/å†»å¹²ä½“ç³»/å¼•ç‰©æŽ¢é’ˆï¼‰çš„æœºä¼šæˆ–å¨�èƒ�ï¼Œä¸€å�¥è¯�ï¼Œæ²¡æœ‰åˆ™å†™ã€Œæ— ç›´æŽ¥å…³è�”ã€�ã€‚

æ ‡é¢˜ï¼š{title}
æ�¥æº�ï¼š{src}ã€€ä¸»ä½“ï¼š{brand}ã€€å�‘å¸ƒæ—¥æœŸï¼š{date}
æ­£æ–‡ï¼š
{body}
c                 ó,  a	€ V '       g   R #  V P                  4       P                  R4      '       Ed   \        P                  V ^(R7      p\        P
                  P                  RR4      p\        P                  P                  VR\        \        V 4      4      R,          ,          4      p\        VR4      P                  VP                  4       ^ RIpVP                  V4      o	\        P                  ! RR	R
P                  V	3R l\!        \#        ^\%        S	4      4      4       4       4      4      R,          # \        P                  V ^R7      pVP&                  ;'       g    VP(                  Vn        \        P                  ! RR	VP*                  4      p\        P                  ! RR	V4      p\        P                  ! RR	V4      p\        P                  ! RR	V4      R,          #   \,         d$   pR\/        T4      R,          ,          u Rp?# Rp?ii ; i)Ú z.pdf)ÚtimeoutÚTMPDIRz/tmpz_intel_%08d.pdfÚwbNz\s+Ú Ú
c              3   óR   <"  € T F  pSV,          P                  4       x € K  	  R # 5i)N)Úget_text)Ú.0ÚiÚdocs   & €ôK   /Users/liuxinyuan/Desktop/Hermesè¾“å‡º-å·¥ä½œç±»/è„šæœ¬/intel_enrich_v01.pyÚ	<genexpr>Úfetch_text.<locals>.<genexpr>K   s!   øé € Ð0dÑLcÀq°°Qµ·±×1BÐ1BÓLcùs   ƒ$'ºNi(
  Nz2(?is)<(script|style|nav|footer|head)[^>]*>.*?</\1>z(?s)<[^>]+>z&[a-z]+;|&#\d+;u   [æŠ“å�–å¤±è´¥: %s]:Né<   Ni áõ)ÚlowerÚendswithÚSÚgetÚosÚenvironÚpathÚjoinÚabsÚhashÚopenÚwriteÚcontentÚfitzÚreÚsubÚrangeÚminÚlenÚapparent_encodingr   ÚtextÚ	ExceptionÚstr)
ÚurlÚkindÚrÚtmpdÚpr'   ÚhÚtÚer   s
   &&       @r   Ú
fetch_textr9   @   sy  ø€ ßÙð2Ø�9‰9‹;×Ñ ×'Ó'Ü—‘�c 2�Ó&ˆAÜ—:‘:—>‘> (¨FÓ3ˆDÜ—‘—‘˜TÐ#4¼¼DÀ»I»ÈÕ8PÕ#QÓRˆAÜ��D‹M×Ñ §	¡	Ô*ÛØ—)‘)˜A“,ˆCÜ—6’6˜& # t§y¡yÔ0dÌEÔRUÐVWÔY\Ð]`ÓYaÓRbÔLcÓ0dÓ'dÓeÐfkÕlÐlÜ�E‰E�#˜rˆEÓ"ˆØ×(Ñ(×6Ð6¨A¯J©JˆŒ
Ü�FŠFÐHÈ#ÈqÏvÉvÓVˆÜ�FŠF�> 3¨Ó*ˆÜ�FŠFÐ% s¨AÓ.ˆÜ�vŠv�f˜c 1Ó% eÕ,Ð,øÜô 2Ø#¤c¨!£f¨S¥kÕ1Õ1ûð2ús0   �%G% ³DG% Ä8)G% Å"BG% Ç%HÇ0HÈHÈHc                 ó2  € V P                  R 4      ;'       g    \        V R,          V R,          4      pV'       d   VP                  R4      '       d#   V P                  R4      ;'       g    RR,           p\        P	                  RV R,          4      P	                  R	V R,          4      P	                  R
V R,          4      P	                  RV P                  RR4      4      P	                  RVR,          4      p\        ^4       EF¼  p \        P                  ! \        ^xRR\        P                  ^4      ,           RR/R\        R^ RV^ 8X  d   RMRRRRRV/./R7      pVP                  4       pVP                  R4      ;'       g    / .^ ,          pVP                  R/ 4      P                  R4      ;'       g    RP                  4       pV'       gK   \        R VP                  R!4      : R"VP                  R#4      ;'       g    / P                  R$4      : 24      h\        P                   ! R%RVP                  4       \        P"                  R&7      P                  4       p\        P$                  ! R'V\        P&                  4      pV'       d(   \        P(                  ! VP                  ^ 4      4      u # R(VR),          /u # 	  R(R,/#   \*         dE   p	T^ 8X  d   \,        P.                  ! R*4        R+p	?	EKô  R(\1        T	4      R),          /u R+p	?	u # R+p	?	ii ; i)-Ú_bodyõ   é“¾æŽ¥õ   æ�¥æº�u   [æŠ“å�–å¤±è´¥u   æ‘˜è¦�r
   u7    ï¼ˆæ­£æ–‡æŠ“å�–å¤±è´¥ï¼Œä»…æ�®æ ‡é¢˜ä¸Žæ‘˜è¦�æ��ç‚¼ï¼‰z{title}õ   æ ‡é¢˜z{src}z{brand}u   ä¸»ä½“z{date}u   æ—¥æœŸz{body}r   ÚAuthorizationzBearer zContent-Typezapplication/jsonÚmodelÚtemperatureÚ
max_tokensi¸  i”  ÚmessagesÚroleÚuserr&   )r   ÚheadersÚjsonÚchoicesÚmessageu   ç©ºå†…å®¹ finish=Úfinish_reasonz reasoning=ÚusageÚcompletion_tokens_detailsz^```(?:json)?|```$)Úflagsz\{.*\}õ   é”™è¯¯:NéP   Ng      @NÚunknown)r   r9   Ú
startswithÚPROMPTÚreplacer*   ÚrequestsÚpostÚAPIÚKEYÚgroupÚMODELrG   ÚstripÚRuntimeErrorr(   r)   ÚMÚsearchr   Úloadsr/   ÚtimeÚsleepr0   )
ÚitÚbodyÚpromptÚattemptr3   ÚjÚchÚcÚm2r8   s
   &         r   Ú	summarizeri   V   sh  € Ø�6‰6�'‹?×DÐDœj¨¨H­°r¸(µ|ÓD€Dß�4—?‘? ?×3Ò3Ø—‘�xÓ ×&Ð& BÐ*cÕcˆÜ�n‰n˜Y¨¨8­Ó5×=Ñ=¸gÀrÈ(Å|ÓTß‘W˜Y¨¨8­Ó5·g±g¸hÈÏÉÈxÐY[ÓH\Ó6]ß‘W˜X t¨E¥{Ó3ð ô ˜—8ˆð	/Ü—’œc¨3Ø'6¸	ÄCÇIÁIÈaÃLÕ8PØ'5Ð7Ið'Kà$+¬U°MÀ1Ø$0¸'ÀQ¼,±$ÈDØ$.°&¸&À)ÈVÐ1TÐ0Uð$WôXˆAð —‘“ˆAØ—%‘%˜	Ó"×*Ð* r d¨AÕ.ˆBØ—‘˜	 2Ó&×*Ñ*¨9Ó5×;Ð;¸×BÑBÓDˆAßå"Ø—F‘F˜?Ö+¨a¯e©e°G«n×.BÐ.BÀ×-GÑ-GÐHcÕ-dð$fó gð gä—’Ð,¨b°!·'±'³)Ä2Ç4Á4ÔH×NÑNÓPˆAÜ—’˜9 a¬¯©Ó.ˆBß.0”4—:’:˜bŸh™h q›kÓ*ÒH°xÀÀ3ÅÐ6HÒHñ# ð. �iÐ Ð øô ô 	/Ø˜!Œ|Ü—
’
˜3—“à ¤# a£&¨¥+Ð.×.ûð		/úsJ   ÄA=KÆ2KÆ8KÇ0KÈB
KÊ$KÊ4
KËLËLË6LÌ	LÌLu(   æ¨¡å¼� %s ï½œ æº�æ–‡ä»¶ %s ï½œ æ�¡ç›® %d)Údaysz%Y-%m-%du¡   æ³¨å†Œè¯�|æ‰¹å‡†|ä¸­æ ‡|å�ˆå�Œ|äº§èƒ½|ä¸“åˆ©|ä¸´åºŠ|GMP|æ”¶è´­|å¢žèµ„|æŠ•èµ„|ä¸šç»©|å¹´æŠ¥|å�Šå¹´æŠ¥|å­£åº¦|æ–°å“�|ä¸Šå¸‚|å�ˆä½œ|ç­¾çº¦|æ‰©äº§|èŽ·è¯�|CE|FDA|IVDRu   è¦�ç‚¹rN   r<   i¼  r=   õ   ç«žå“�å®˜ç½‘õ   å·¨æ½®å…¬å‘Šr>   u@   å¹‚ç­‰è·³è¿‡å·²æ��ç‚¼ %d æ�¡ï¼ˆå¤�ç”¨åŽ†å�²ç»“æžœï¼Œä¸�é‡�çƒ§ï¼‰uG   å¾…æ��ç‚¼æ�¡ç›®: %dï¼ˆç«žå“� %d ï¼� å®¢æˆ·å…¬å‘Š %d ï¼� æ‹›æŠ•æ ‡ %dï¼‰c              #   ód   "  € T F&  qR ,          P                  R4      '       g   K"  ^x € K(  	  R# 5i)r=   rk   N©rQ   ©r   r   s   & r   r   r   �   s!   é € ÐK™S˜ h¥K×$:Ñ$:¸>×$J—!’!›Sùó   ‚0¦
0c              #   óD   "  € T F  qR ,          R8X  g   K  ^x € K  	  R# 5i)r=   rl   N© ro   s   & r   r   r   �   s   é € Ð8‘3ˆa˜H�+¨Ñ7�Š“3ùs   ‚ –
 c              #   ód   "  € T F&  qR ,          P                  R4      '       g   K"  ^x € K(  	  R# 5i)r=   N)u   å…¨å›½å…¬å…±èµ„æº�õ	   æ£€ç´¢æº�rn   ro   s   & r   r   r   ‘   s"   é € ÐV‘3ˆa˜H�+×0Ñ0Ð1T×U�Š“3ùrp   u.   âœ… æ— æ–°å¢žæ�¡ç›®ï¼Œè·³è¿‡æ��ç‚¼ï¼ˆå¹‚ç­‰ï¼‰)Úmax_workersc              #   ó8   "  € T F  pR V9  g   K  ^x € K  	  R# 5i)rN   Nrr   )r   Úos   & r   r   r   œ   s   é € Ð.‘Dˆq˜H¨AÑ-�Š“Dùs   ‚	�
r;   ÚwF)Úensure_asciiÚindentu4   å�ˆå¹¶å�Žæ–‡ä»¶æ�¡ç›®: %dï¼ˆåŽ†å�² %d + æ–°å¢ž %dï¼‰u2   âœ… æ��ç‚¼å®Œæˆ�: %d/%d æˆ�åŠŸ ï½œ ç”¨æ—¶ %.0f ç§’u   â†’:Né   Nu
   
æ ·ä¾‹ Â·:Né.   N:Ni�  N)r   r   )u   å…¨å›½å…¬å…±èµ„æº�äº¤æ˜“rt   )PÚ__doc__rG   r   r(   Úsysr_   Úconcurrent.futuresr   r   r   rT   ÚWr    r!   ÚRUNSÚnowÚstrftimeÚDAYÚMODEÚargvÚaÚisdigitÚSRC_FILEÚOUT_FILEÚ
expanduserÚCFGr$   ÚreadÚtxtr]   ÚmrW   rV   rY   ÚprintÚexitÚUAÚSessionr   rF   ÚupdaterR   r9   ri   rZ   r^   Úitemsr,   ÚRECENTÚcompileÚBIZÚEXISTÚexistsÚloadÚ
isinstancer   ÚdictÚ
done_linksÚselÚCAPr   rQ   ÚappendÚbeforeÚsumÚ
SystemExitÚt0ÚexÚlistÚmapÚoutsÚzipra   rw   ÚokÚNEWÚhaveÚMERGEDÚdumpÚdumps)Úlr   ra   ÚkÚvÚxs   000000r   Ú<module>rµ      s¢  ðñó Û 	Û 	Û 
Û Ý 1ß (ã à6€Ø	‡w�w‡|�|�AÐ1Ó2€Ø‡l‚lƒn×Ñ˜hÓ'€Ø€Ø	�‰�"�ˆ€AØÐÔØŠØ	
�‰�ŒØŠñ	 
ð
 ¨$°'¬/Ñ&¸~ÕN€Ø¨T°W¬_Ñ)ÐBSÕT€Ø‡g�g×ÑÐ@ÓA€ñ ˆ3˜Ô!×&Ñ&Ó(€Ø‡I‚IÐ9¸3Ó?€Ø‡i‚iÐ/°Ó5€Ø1€Ø€ß
Ù	Ð
!Ô" C§H¢H¨Q¤Kð;€à×ÒÓ€Ø ‡	�	× Ñ �, Ð$5Ð7GÐHÔ Ið
€ò 2ò,!ñB !% R§W¡W§\¡\°$¸Ó%AÈGÕ TÓbÑ T˜1×X_ÑX_×XaŒˆ�‰�AŽÑ TÑb€Ù Ð0°D¸(ÁCÈÃJÐ3OÕOÔ PØ
�,Š,‹.™9¨"Ô-Õ
-×	7Ñ	7¸
Ó	C€ð 	‡j‚jð  vó  w€Ø
€Ø‡7�7‡>�>�"—'‘'—,‘,˜t XÓ.×/Ò/Ø�IŠI‘d˜2Ÿ7™7Ÿ<™<¨¨hÓ7À'ÔJÓK€EÙ#(Ón¡5˜a©J°q·u±u¸X³È×,MŒkÐRZÐbcÐdlÕbmÑRmŒkˆa��kˆk¡5Ñn€
Ø€Ø�WŒ_�c #€Û	€AØˆ…{×Ñ˜n×-Ò-Ø�
‰
�1ŽØ	
ˆ8�˜Ô	&¨3¯:©:°a¸µk×+BÒ+BØ�
‰
�1ŽØ	
ˆ8�×	Ñ	Ð I×	JÔ	JØ�
‰
�1Žñ 
ñ 
ˆS‹€ÙÓ7‘#ˆQ˜8�¨JÑ6‡q€q‘#Ñ7¸¸Ð=€Ø	‰S�‹XÔÙ	Ð
LÐPVÑY\Ð]`ÓYaÕPaÕ
bÔcÙ ÐOÙˆƒH‰cÑK™SÓKÓKÙÑ8‘3Ó8Ó8ÙÑV‘3ÓVÓVðSXõ Xô Y÷
 Ù	Ð
:Ô;Ù
�Q‹-Ðà	‡Y‚Yƒ[€Ù A×&Õ&¨"Ù�—‘�y #Ó&Ó'€D÷ 'á��dŽ^�E€BˆØ€B€xƒLñ áÑ.‘DÓ.Ó.€Ù?BÕC¹s¸Ÿ™œÔ4™‘� q¨G¡|ŒˆŠ™Õ4¹sÓC€Ù"Ó#™U˜ˆ(�ˆ™UÑ#€Ø	™SÓ<™S˜ h¥K°tÑ$;—!�!™SÑ<Õ	<€Ø ‡	‚	ˆ&‘$�r—w‘w—|‘| D¨(Ó3°SÀ7ÔKØ Qõ(á Ð<ÁÀFÃÉSÐQVËZÑY\Ð]cÓYdÑgjÐkpÓgqÕYqÐ?rÕrÔ sÙ Ð:¸bÁ#ÀcÃ(ÈDÏIÊIËKÐZ\ÕL\Ð=]Õ]Ô ^Ù €eˆR�W‰W�\‰\˜$ Ó)Ô *Ù‘#�c˜4“.Ó! "×%Ð%�E€BˆÙ	ˆ-˜˜H� cÕ*Ô+Ù	ˆ$�*Š*�Q U°1Ô
5°dÕ
;Ö<ó &ùò] 	cùò oùò 8÷ '×&Ð&üó
 5ùÔCùÚ#ùÚ<sf   Æ+YÇYÊ, YËYË!YÎ4YÏYÑ7Y$ÓY>ÓY8Ó,Y8Ó2Y>ÔZÔZ
Ô0Z
Ù$Y5	Ù8Y>