+
    Ÿ›Ìjd   ã                   óÜ  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RItRt	]P                  P                  ]	R4      t]P                  P                  ]	R4      t]P                  P                  R4      t]P                  P                  R4      t/ RR	bR
RbRR	bRR	bRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRR/CtR tR  tR! tR" tR# tR$ t]R%8X  d
   ]! 4        R# R# )&uz  ä¸ºé”€å”®åŠ©æ‰‹ç”Ÿæˆ�ã€ŒæŒ‰äººåˆ‡åˆ†çš„æ•°æ�®åŒ…ã€�â€”â€” å�ªæœ‰æœ¬äººå®¢æˆ·èŒƒå›´å†…çš„å…¨é‡�æ•°æ�®ã€‚

è®¾è®¡åŽŸåˆ™ï¼šæ•°æ�®éš”ç¦»é� **ç‰©ç�†åˆ‡åˆ†**ï¼Œä¸�é� æ��ç¤ºè¯�è‡ªè§‰ã€‚
  Â· æ¯�ä¸ªé”€å”®å‘˜ä¸€ä¸ªç›®å½•ï¼šå›¢é˜Ÿå…±äº«/é”€å”®æ•°æ�®åŒ…/<é”€å”®å‘˜>/
  Â· ç›®å½•é‡Œå�ªæœ‰**å±žäºŽæœ¬äººå®¢æˆ·**çš„è®°å½•ï¼›åˆ«äººçš„å®¢æˆ·æ•°æ�®æ ¹æœ¬ä¸�åœ¨æ–‡ä»¶é‡Œ
  Â· è¦†ç›–ï¼šé£žä¹¦æ´»åŠ¨ / å®¢è¯‰ / è®¢å�•æ˜Žç»†ï¼ˆå�«å�•å�·Â·å�•ä»·ï¼‰/ æˆ�äº¤ä»·åŽ†å�² / å®¢æˆ·ç‰¹æ®Šè¦�æ±‚ / é‡‡è´­æ±‡æ€»

ç”¨æ³•ï¼š
  python3 build_sales_data_pack.py åˆ˜å­�ç ”          # å�•äºº
  python3 build_sales_data_pack.py --all          # å…¨éƒ¨æœ‰æ•°æ�®çš„é”€å”®å‘˜
N)Údatetimeu0   /Users/liuxinyuan/Desktop/Hermesè¾“å‡º-å·¥ä½œç±»u   æ•°æ�®u   å›¢é˜Ÿå…±äº«/é”€å”®æ•°æ�®åŒ…u)   ~/Desktop/hermasè¾“å…¥-å·¥ä½œå�°æ•°æ�®åº“z9~/.hermes/profiles/baorui-sales/customer_attribution.jsonu
   å¤§å®¢æˆ·1u	   åˆ˜å­�ç ”u
   å¤§å®¢æˆ·2u	   èµµäº‘æµ©u	   é»„æ˜Žæœˆu	   å¼ ç«‹å¨…u	   é¾™å�‹æ³¢u	   é»„æ–‡æ‰�u	   é»„å»ºä½³u	   éŸ©è¿œæ€€u	   é»„è‡ªé‘«u	   æ�Žå²šé£Žu   æ®µçŽ‰u	   çŽ‹æ…§æ´�u   å�´äº‘u	   åˆ˜é�™æ–‡u   åˆ˜æ–Œu	   é™ˆå½©çº¢u	   æ¢�èŽ¹èŽ¹u	   èµµä»¥è¯ºu   æ›¾ç�¦u   æ›¾ç�ªu   è‚–ç«‹c                óú  € \        4       pV  Fê  p\        V4      P                  4       pV'       g   K&  VP                  V4       \        P
                  ! RRV4      p\        P
                  ! RRV4      p\        V4      ^8¼  d   VP                  V4       \        P                  ! RV4      pV'       g   K©  \        VP                  ^4      4      ^8¼  g   KÊ  VP                  VP                  ^4      4       Kì  	  V# )ud   æŠŠå½’å±žè¡¨é‡Œçš„å®¢æˆ·/é›†å›¢å��è½¬æˆ�åŒ¹é…�å…³é”®è¯�ï¼ˆç”¨äºŽåŒ¹é…�æ•°æ�®é‡Œçš„å…¬å�¸å…¨å��ï¼‰ã€‚u   é›†å›¢$Ú u	   ï¼ˆ.*?ï¼‰u•   ^(?:æ·±åœ³å¸‚|ç� æµ·å¸‚|å¹¿å·žå¸‚|ä¸Šæµ·å¸‚|åŒ—äº¬å¸‚|æ�­å·žå¸‚|è‹�å·žå¸‚|è¥¿å®‰å¸‚|å®�æ³¢å¸‚|è‹�å·ž|æ�­å·ž|å®�æ³¢|ä¸Šæµ·|åŒ—äº¬|å¹¿å·ž|è¥¿å®‰)?(.*)$)	ÚsetÚstrÚstripÚaddÚreÚsubÚlenÚmatchÚgroup)ÚnamesÚkwsÚnÚbaseÚms   &    ôP   /Users/liuxinyuan/Desktop/Hermesè¾“å‡º-å·¥ä½œç±»/è„šæœ¬/build_sales_data_pack.pyÚkeywordsr   #   s¼   € ä
‹%€CÛˆÜ�‹F�L‰L‹NˆßÙØ�‰�Œ
Ü�vŠv�j " aÓ(ˆÜ�vŠv�l B¨Ó-ˆÜˆt‹9˜Œ>Ø�G‰G�DŒMä�HŠHð  nð  ptó  uˆß‰1”�Q—W‘W˜Q“Z“ AÖ%Ø�G‰G�A—G‘G˜A“JÖñ ð €Jó    c                 óŽ   a € \        S 4      o \        ;QJ d    V 3R  lV 4       F  '       g   K   R# 	  R# ! V 3R  lV 4       4      # )c              3   ó,   <"  € T F	  qS9   x € K  	  R # 5i©N© )Ú.0ÚkÚnames   & €r   Ú	<genexpr>Úmatches.<locals>.<genexpr>8   s   øé € Ð&¡#˜Q�DŽy£#ùs   ƒTF)r   Úany)r   r   s   f&r   Úmatchesr    6   s5   ø€ Üˆt‹9€Dß‹3Ô&¡#Ó&�3Œ3Ð&Š3Ð&ˆ3Ô&¡#Ó&Ó&Ð&r   c                  ó  € . p \         P                  P                  \        R 4      R3\         P                  P                  \        R4      R3\         P                  P                  \        R4      R33 Fw  w  r\        P
                  ! V4      P                  R4      pVP                   Uu. uF  p\        V4      P                  4       NK  	  upVn        W#R&   V P                  V4       Ky  	  \        P                  ! V RR	7      pVR
,          P                  \        4      P                  P                  4       P                  R 4      VR&   VR,          P                  \        4      P                  P                  4       VR&   V# u upi )u-   2024å’Œ2025åŽ†å�²æ•°æ�®/2024å…¨å¹´è®¢å�•.xlsxÚ2024u-   2024å’Œ2025åŽ†å�²æ•°æ�®/2025å…¨å¹´è®¢å�•.xlsxÚ2025u9   æœˆåº¦é”€å”®é¢�æ•°æ�®/é”€å”®è®¢å�•_20260101-20260930.xlsxÚ2026ÚSheet1Ú_yearT)Úignore_indexõ	   é”€å”®å‘˜c                 ó,   € \         P                  W 4      # r   )ÚMERGEÚget)Úxs   &r   Ú<lambda>Úload_erp.<locals>.<lambda>E   s   € ÄEÇIÁIÈaÄOr   Ú_spõ   å®¢æˆ·Ú_c)ÚosÚpathÚjoinÚERPÚpdÚ	ExcelFileÚparseÚcolumnsr   r   ÚappendÚconcatÚastypeÚmap)ÚframesÚpÚyÚdÚcs        r   Úload_erprC   ;   s)  € Ø€FÜ—'‘'—,‘,œsÐ$SÓTÐV\Ð]Ü—'‘'—,‘,œsÐ$SÓTÐV\Ð]Ü—'‘'—,‘,œsÐ$_Ó`ÐbhÐiók‰ˆô �LŠL˜‹O×!Ñ! (Ó+ˆØ-.¯YªYÓ7©Y¨”S˜“V—\‘\–^©YÑ7ˆŒ	Øˆ'‰
Ø�‰�aÖñkô 	�	Š	�& tÔ,€AØ��~×$Ñ$¤SÓ)×-Ñ-×3Ñ3Ó5×9Ñ9Ñ:SÓT€A€e�HØ��k× Ñ ¤Ó%×)Ñ)×/Ñ/Ó1€A€d�GØ€Hùò 8s   Â,"Fc           	      ó¼   € \         P                  ! \         P                  P                  V 4      R R7       \        P
                  ! V\        V RRR7      R^R7       R# )T©Úexist_okÚwúutf-8©ÚencodingF)Úensure_asciiÚindentN)r2   Úmakedirsr3   ÚdirnameÚjsonÚdumpÚopen)r3   Úobjs   &&r   rP   rP   J   s9   € Ü‡K‚K”—‘—‘ Ó%°Õ5Ü‡I‚Iˆc”4˜˜c¨GÔ4À5ÐQR×Sr   c                 ó¾  a€ \        VR ,          P                  V 4      ;'       g    / P                  R. 4      4      p\        VP                  VR,          V 8H  R3,           Uu0 uF  qD'       g   K  VR8w  g   K  VkK  	  up4      p\	        V4      o\
        P                  P                  \        V 4      p\
        P                  P                  V4      '       d   \        P                  ! V4       \
        P                  ! VRR7       / p\        P                  ! \        \
        P                  P                  \         R4      RR	7      4      R
,          pV U	u. uF(  p	\#        V	P                  R4      S4      '       g   K&  V	NK*  	  p
p	\%        \
        P                  P                  VR4      RRR\'        V
4      RRR
V
/4       \'        V
4      VR&   \        P                  ! \        \
        P                  P                  \         R4      RR	7      4      R
,          pV Uu. uF(  p\#        VP                  R4      S4      '       g   K&  VNK*  	  p
p\%        \
        P                  P                  VR4      RRR\'        V
4      RRR
V
/4       \'        V
4      VR&   WR,          P)                  V3R l4      ,          pR= Uu. uF  pWLP*                  9   g   K  VNK  	  ppWÍ,          P-                  4       pVR,          P.                  VR&   \%        \
        P                  P                  VR4      RRR\1        \'        V4      4      RRR
\        P2                  ! VP5                  RRR7      4      /4       \1        \'        V4      4      VR &   \        P                  ! \        \
        P                  P                  \         R!4      RR	7      4      pVR",          P7                  4        UUu/ uF  w  pp\#        VS4      '       g   K  VVbK  	  ppp\%        \
        P                  P                  VR#4      RR$R%\'        V4      RR&VP                  R'R(4      ,          R"V/4       \'        V4      VR)&   \        P                  ! \        \
        P                  P                  \         R*4      RR	7      4      pVR
,           Uu. uF(  p\#        VP                  R4      S4      '       g   K&  VNK*  	  p
p\%        \
        P                  P                  VR+4      RR,R\'        V
4      RR-R.VP                  R.4      R
V
/4       \'        V
4      VR/&   \
        P                  P                  \8        R0V ,          4      p\
        P                  P;                  V4      '       d;   \        P<                  ! V\
        P                  P                  VR14      4       R2VR3&   \%        \
        P                  P                  VR44      RR5V ,          R6R7V ,          R8\>        P@                  ! 4       PC                  R94      R:\'        S4      R;VR<V/4       V# u upi u up	i u upi u upi u uppi u upi )>ÚsalespeopleÚ	customersr/   r1   ÚnanTrE   zactivities_feishu.jsonrH   rI   ÚitemsÚcustomeru   01_é£žä¹¦æ´»åŠ¨.jsonu   _è¯´æ˜Žu<   æœ¬äººå®¢æˆ·èŒƒå›´å†…çš„é£žä¹¦æ´»åŠ¨è®°å½•ï¼ˆå…¨é‡�å­—æ®µï¼‰u   _æ�¡æ•°u   _å�£å¾„us   ä¸¥æ ¼æŒ‰å®¢æˆ·æ¸…å�•åŒ¹é…�ï¼šå®¢æˆ·å��å‘½ä¸­æœ¬äººå®¢æˆ·/é›†å›¢ï¼›ä¸�å› ã€Œæœ¬äººæ��äº¤ã€�è€Œæ”¾è¡ŒèŒƒå›´å¤–å®¢æˆ·u   é£žä¹¦æ´»åŠ¨zmcp_complaints.jsonu   02_å®¢è¯‰.jsonuN   æœ¬äººå®¢æˆ·èŒƒå›´å†…çš„å®¢è¯‰è®°å½•ï¼ˆå�«ç´§æ€¥åº¦/å¤©æ•°/çŠ¶æ€�/å¤„ç�†äººï¼‰uU   ä¸¥æ ¼æŒ‰å®¢æˆ·æ¸…å�•åŒ¹é…�ï¼›ä¸�å› ã€Œæœ¬äººåˆ›å»º/å¤„ç�†ã€�è€Œæ”¾è¡ŒèŒƒå›´å¤–å®¢æˆ·u   å®¢è¯‰c                 ó   <€ \        V S4      # r   )r    )r,   r   s   &€r   r-   Úbuild.<locals>.<lambda>k   s   ø€ ¬°°3¬r   r&   u   03_è®¢å�•æ˜Žç»†.jsonuQ   æœ¬äººå®¢æˆ·èŒƒå›´å†…çš„è®¢å�•æ˜Žç»†ï¼ˆå�«å�•æ�®ç¼–å�·ã€�å�«ç¨Žå�•ä»·ã€�æ‰¹å�·ï¼‰u=   ä¸¥æ ¼æŒ‰å®¢æˆ·æ¸…å�•åŒ¹é…�ï¼›2024/2025 å…¨å¹´ + 2026 1-9 æœˆÚrecordsF)ÚorientÚforce_asciiu   è®¢å�•æ˜Žç»†zcustomer_price_history.jsonÚhistu   04_æˆ�äº¤ä»·åŽ†å�².jsonu]   æœ¬äººå®¢æˆ·çš„åŽ†å�²æˆ�äº¤ä»·ï¼ˆå®¢æˆ·Ã—è´§å�·Ã—ä½“ç³»ï¼Œå�«æœ€è¿‘ä»·/å�‡ä»·/æˆ�äº¤æ˜Žç»†ï¼‰u
   _å®¢æˆ·æ•°uO   æŒ‰å®¢æˆ·å��åŒ¹é…�æœ¬äººå®¢æˆ·/é›†å›¢ï¼›æº� customer_price_history.jsonï¼ˆ%sï¼‰Ú	generatedr   u   æˆ�äº¤ä»·å®¢æˆ·æ•°z"customer_special_requirements.jsonu   05_å®¢æˆ·ç‰¹æ®Šè¦�æ±‚.jsonuz   æœ¬äººå®¢æˆ·èŒƒå›´å†…çš„ç‰¹æ®Šè¦�æ±‚ï¼ˆæ�­é…�è§„åˆ™/é…�æ–¹ä½“ç³»/åŒ…è£…æ ‡ç­¾/äº¤ä»˜ç‰©æµ�/è´¨æ£€æ–‡ä»¶/ä»·æ ¼è´¦æœŸç­‰ï¼‰u   ä¸¥æ ¼æŒ‰å®¢æˆ·æ¸…å�•åŒ¹é…�Ú
categoriesu   ç‰¹æ®Šè¦�æ±‚u'   å›¢é˜Ÿå…±äº«/å®¢æˆ·é‡‡è´­æ±‡æ€»/%s.jsonu   06_é‡‡è´­æ±‡æ€».jsonu   å·²å�«u   é‡‡è´­æ±‡æ€»u   _ç´¢å¼•.jsonun   æœ¬æ•°æ�®åŒ…å�ªåŒ…å�«ã€Œ%sã€�æœ¬äººå®¢æˆ·èŒƒå›´å†…çš„æ•°æ�®ã€‚å…¶ä»–é”€å”®å‘˜çš„å®¢æˆ·æ•°æ�®ä¸�åœ¨æœ¬åŒ…å†…ã€‚u   _æŽˆæ�ƒuG   ä»…ä¾›ã€Œ%sã€�æœ¬äººæŸ¥çœ‹ï¼›ä¸�å¾—è¯»å�–å…¶ä»–äººçš„æ•°æ�®åŒ…ç›®å½•ã€‚u   _ç”Ÿæˆ�æ—¶é—´z%Y-%m-%d %H:%Mu   _å®¢æˆ·å…³é”®è¯�æ•°u   _å®¢æˆ·æ¸…å�•u   æ–‡ä»¶)u   å�ˆå�Œæ—¥æœŸu   å�•æ�®ç±»åž‹u   å�•æ�®ç¼–å�·u   å�•æ�®çŠ¶æ€�r0   r(   u   ç‰©æ–™ç¼–ç �u   ç‰©æ–™å��ç§°u   é”€å”®å�•ä½�u   é”€å”®æ•°é‡�u   å�«ç¨Žå�•ä»·u   ç¨ŽçŽ‡%u   ä»·ç¨Žå�ˆè®¡u   æ˜¯å�¦èµ å“�u   å�ˆå�Œç¼–å�·#u   è´§å�·#u   å‡ºè´§æ‰¹å�·#u   äº§å“�å¤§ç±»#)"Úlistr+   ÚsortedÚlocr   r2   r3   r4   ÚOUTÚisdirÚshutilÚrmtreerM   rO   ÚloadrQ   ÚDATAr    rP   r   Úapplyr9   ÚcopyÚvaluesÚintÚloadsÚto_jsonrW   ÚROOTÚexistsÚcopy2r   ÚnowÚstrftime)ÚpersonÚerpÚattribr   rB   Úown_from_erprA   ÚstatÚactÚaÚhitÚcompr
   ÚcolsÚrowsÚphÚvr^   ÚsrÚiÚsrcr   s   &&&                  @r   Úbuildr…   O   s]  ø€ Ü�&˜Õ'×+Ñ+¨FÓ3×9Ð9°r×>Ñ>¸{ÈBÓOÓP€EÜ c§g¡g¨c°%­j¸FÑ.BÀDÐ.HÖ&IÓ^Ñ&I ËQœ1ÐSTÐX]ÑS]Ÿ1˜1Ñ&IÑ^Ó_€Lä
�5‹/€CÜ
�‰�‰”S˜&Ó!€AÜ	‡w�w‡}�}�Q×ÒÜ�Š�aÔÜ‡K‚K�˜DÕ!Ø€Dô �)Š)”DœŸ™Ÿ™¤dÐ,DÓEÐPWÔXÓ
YÐZaÕ
b€CÙÓ
=‘c�œW Q§U¡U¨:Ó%6¸×<�1ˆ1‘c€CÐ
=ÜŒ�‰�‰�aÐ/Ó	0ØÐQÐS\Ô^aÐbeÓ^fØð  Ið  KRð  TWð3Xô Yô ˜s›8€DˆÑô �9Š9”Tœ"Ÿ'™'Ÿ,™,¤tÐ-BÓCÈgÔVÓWÐX_Õ`€DÙÓ
>‘d�œg a§e¡e¨JÓ&7¸×=�1ˆ1‘d€CÐ
>ÜŒ�‰�‰�aÐ)Ó	*ØÐcÐenÔpsÐtwÓpxØÐjÐlsÐuxð-zô {ô ˜“X€Dˆ�Nð �$�i�o‰oÔ7Ó8Õ
9€Cñ:ó Oñ :�!à=>Ç+Á+Ñ=M÷ ˆAñ :€Dð Oð �9�>‰>Ó€DØ˜•L×'Ñ'€Dˆ�MÜŒ�‰�‰�aÐ/Ó	0ØÐfÐhqÔsvÔwzÐ{ó  xAó  tBØÐRØ”—’˜DŸL™L°	Àu˜LÓMÓNð3Pô Qô œs 4›y›>€DˆÑô 
�Š”4œŸ™Ÿ™¤TÐ+HÓIÐT[Ô\Ó	]€BØ �Z×-Ñ-Ô/ÔCÑ/‘T�Q˜´7¸1¸c·?ŒDˆAˆqŠDÑ/€DÑCÜŒ�‰�‰�aÐ2Ó	3ØÐrð  uAô  CFð  GKó  CLØÐdÐgi×gmÑgmÐnyÐ{}Óg~Õ~Ø�ð6ô ô "% T£€DÐ	Ñô 
�Š”4œŸ™Ÿ™¤TÐ+OÓPÐ[bÔcÓ	d€BØ˜–kÓ
E‘k�¤W¨Q¯U©U°:Ó->À×%D�1ˆ1‘k€CÐ
EÜŒ�‰�‰�aÐ5Ó	6Øð  PØ”3�s“8˜YÐ(EØ�b—f‘f˜\Ó*¨G°Sð9:ô ;ô ˜s›8€DˆÑô �'‰'�,‰,”tÐFÈÕOÓ
P€CÜ	‡w�w‡~�~�c×ÒÜ�Š�Sœ"Ÿ'™'Ÿ,™, qÐ*@ÓAÔBØ'ˆˆ^ÑäŒ�‰�‰�a˜Ó	(Øð  Dð  GMõ  MØÐ\Ð_eÕeØœŸš›×0Ñ0Ð1AÓBØœs 3›xØ˜Ø�$ð+ô ð €KùòM _ùò >ùò ?ùòOùó Dùò FsN   Á#	Y Á1Y Á:Y Å#YÆYÈ #Y
ÉY
Ê?YËYÏ'YÐYÒ;#YÓ#Yc                  óÎ  € \         P                  ! \        \        R R7      4      p \	        4       p\
        P                  R,          pV'       d   V^ ,          R8X  d"   V R,           Uu. uF  q3R9  g   K  VNK  	  upMTp\        P                  ! \        RR7       V F>  pW0R,          9  d   \        RV4       K  \        W1V 4      p\        RV:R	 R
V: 24       K@  	  R# u upi )rH   rI   :é   NNz--allrT   TrE   u!   è·³è¿‡ï¼ˆå½’å±žè¡¨æ— æ­¤äººï¼‰ï¼šu   âœ… Ú8Ú N)u	   åˆ˜æ–°å…ƒ)rO   rh   rQ   ÚATTRIBrC   ÚsysÚargvr2   rM   rd   Úprintr…   )rw   rv   Úargsr?   ÚpeopleÚsts         r   Úmainr‘   š   s²   € Ü�YŠY”tœF¨WÔ5Ó6€FÜ
‹*€CÜ�8‰8�B�<€Dç˜d 1�g¨Ô0ð ! Ö/ÓKÑ/�Q¸NÑ3J�qˆqÑ/ÒKØ7;ð ä‡K‚K”˜dÕ#ÛˆØ˜=Õ)Ô)ÜÐ5°qÔ9¹8Ü�1˜6Ó"ˆÝœq¢"Ð%Ö&ó	 ùò Ls   Á(C"Á5C"Ú__main__)Ú__doc__rO   r2   r	   rf   r‹   r   Úpandasr6   rp   r3   r4   ri   rd   Ú
expanduserr5   rŠ   r*   r   r    rC   rP   r…   r‘   Ú__name__r   r   r   Ú<module>r—      s’  ðñ
ó Û 	Û 	Û Û 
Ý ã à9€Ø	‡w�w‡|�|�D˜(Ó#€Ø‡g�g‡l�l�4Ð7Ó8€Ø‡g�g×ÑÐDÓE€Ø	�‰×	Ñ	ÐWÓ	X€ð	sˆ�{ð 	s L°+ð 	s¸{ÈKð 	sÐYdÐfqð 	sØ	�kð	sØ#.°ð	sØ=HÈ+ð	sØWbÐdoð	sØqyð  |Gð	sà	�hð	sà +¨Xð	sà7?Àð	sàKVÐX`ð	sð 
�hð	sð !,¨Xð	sð 8@Àð	sð LTÐU]ð	sð `hÐiqñ	s€òò&'ò
òTò
HòV'ð ˆzÔÙ†Fñ r   