
    (<i                     b   d dl Z d dlZd dlZd dlZd dlmZmZmZ dej                  vrej                  j                  d d       d dl	m
Z
 d dlmZ  ee      Z e ed            ZdZd	Zd
dd fddd fddd fgZdefdZdededefdZdededdfdZdeddfdZddZedk(  r e        yy)     N)datetime	timedeltatimezonez/home/jay/workspace)NaverSAClient)
get_logger	   )hoursz6/home/jay/workspace/dashboard/data/naver-sa-stats.jsoniR  F   보험영업c                 
    d| v S )Nr    names    Q/home/jay/workspace/.worktrees/task-2057-dev2/tools/naver-ads/collect_sa_stats.py<lambda>r      s    ~'=     Gu   개인사업/지점장c                     d| v xs d| v S )Nu   개인사업u	   지점장r   r   s    r   r   r      s    41G1^;Z^K^ r   Hu   무자본창업c                     d| v xs d| v S )Nu	   무자본u   창업r   r   s    r   r   r      s    +*=*QTAQ r   returnc                      dddddddS )Nr           )impressionsclickscostctrcpcconversionsr   r   r   r   _empty_summaryr       s    1S[\]]r   sinceuntilc                    t        j                  t              j                  d      }t        j                  |      t        j                  |       z
  j
                  dz   }g }t        |      D ]J  }t        j                  |       t        |      z   j                  d      }|j                  |ddddd       L |t               t               dt        D 	cg c]  \  }}}	||dddd	dd
 c}	}}|t        dd	dg dS c c}	}}w )Nsecondstimespec   days%Y-%m-%dr   dater   r   r   r   today	yesterdayr   idr   r   r   r   r   r   dailyspent_today	burn_ratelast_collectedsummarykeyword_groupsdaily_trendbudget	campaigns)r   nowKST	isoformatfromisoformatr)   ranger   strftimeappendr    _GROUP_RULES_DAILY_BUDGET)
r!   r"   r=   r)   r:   idgidgname_s
             r   _empty_outputrK       s   
,,s

%
%y
%
9C""5)H,B,B5,IIOORSSDK4[ d##E*YA->>HHTAa1a`abcd #%')
 ".
 
UA a1aX[def
 #)!#N 
s   Dr,   r)   c                 d   t        j                  |       }|t        |dz
        z
  }|j                  d      }|j                  d      }|}|t        d      z
  j                  d      }	 t	               }	 |j                         }
|
D cg c])  }|s|j                  d      xs |j                  d      + }}|D cg c]  }|s|	 }}i }|D ]q  }	 |j                  |      }|D ]W  }|j                  d
      xs |j                  dd      }|j                  dd      }t        D ]  \  }}} ||      s|||<    W Y s i }t        D ci c]  \  }}}|dddd }}}t               }t               }g }|r	 |j!                  |||d      }|D ]  }|j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      } |j                  dd      }!||vr|ddddd||<   ||   dxx   |z  cc<   ||   dxx   |z  cc<   ||   dxx   | z  cc<   ||   dxx   |!z  cc<   ||k(  r4|dxx   |z  cc<   |dxx   |z  cc<   |dxx   | z  cc<   |dxx   |!z  cc<   ||k(  s|dxx   |z  cc<   |dxx   |z  cc<   |dxx   | z  cc<   |dxx   |!z  cc<   " |d   rt#        |d   |d   z  dz  d      |d<   |d   rt#        |d   |d   z        |d<   |d   rt#        |d   |d   z  dz  d      |d<   |d   rt#        |d   |d   z        |d<   |
D ]\  }|j                  d      xs |j                  dd      }|j%                  ||j                  dd      |j                  d d      d!       ^ g }"t'        |      D ]G  }#|t        |#      z   j                  d      }$|"j%                  |j                  |$|$ddddd             I g }%t        D ]h  \  }}&}|j                  |dddd      }'|'d"   }|'d#   }|'d   } |%j%                  ||&||| |rt#        ||z  dz  d      nd$|rt#        | |z        ndd%       j |d   }(t(        rt#        |(t(        z  d&      nd$})t        j*                  t,              j/                  d'(      ||d)|%|"t(        |(|)d*|d+}*t        |*       y # t
        $ r5}	t        j                  d|	       t        t        ||             Y d }	~	y d }	~	ww xY w# t
        $ r5}	t        j                  d|	       t        t        ||             Y d }	~	y d }	~	ww xY wc c}w c c}w # t
        $ r"}	t        j                  d	||	       Y d }	~	d }	~	ww xY wc c}}w # t
        $ r#}	t        j                  d|	       g }Y d }	~	d }	~	ww xY w),Nr'   r(   r*   u"   NaverSAClient 초기화 실패: %su   캠페인 조회 실패: %snccCampaignIdr1   )campaign_idu,   광고그룹 조회 실패 (campaign=%s): %snccAdgroupId r   r   )impclkr   )r!   r"   )ids
time_rangeu   stats 조회 실패: %sr,   impCntclkCntsalesAmtccntr+   r   r   r   r   d      r   r   status)r1   r   r[   rQ   rR   r   r0      r$   r%   r-   r2   r6   )r   r@   r   rB   r   	Exceptionloggererror_saverK   get_campaignsgetget_adgroupswarningrD   r    	get_statsroundrC   rA   rE   r=   r>   r?   )+r,   r)   until_dtsince_dtr!   r"   	today_stryesterday_strclienter<   ccampaign_idscidadgroup_group_mapadgroupsagag_idag_namerH   rJ   matcher	daily_map	group_aggtoday_statsyesterday_statscampaign_resultsstatsrecord	stat_daterQ   rR   r   convr:   rF   rG   r9   rI   aggr4   r5   outputs+                                              r   collectr   7   sk   %%d+H)22Hj)Ej)EI	q 11;;JGM((*	 DMRaPQAEE/*9aeeDk9RLR#/7C3C7L7 )+ 	**s*;H  	BFF>*>bffT2.>EffVR(G#/ Q7#/2%e,	 "$IXd!e93PQST#qA'F"F!eI!e "K$&O	$$ %*U; % E  	7F

62.I**Xq)C**Xq)C::j!,D::fa(D 	)09!WXbctu'v	)$i /36/i *c1*i (D0(i /47/I%M*c1*H%,%F#t+#M*d2*M).#5.)S0)'4/'.$6.1	76 }%!&{8'<{=?Y'Y\_'_ab!cKx !&{6':[=R'R!SK=)%*?8+DWdGe+ehk+kmn%oOE"8$%*?6+B_U]E^+^%_OE"  	A%%(;AEE$OC##EE&"-eeHb1	 K4[ v	q))33J?9==QqTU_`qr,stuv
 N% 
UAmmC1a!@A%j%j6{"47uS3Y_a0S,/uTCZ(Q
	

" f%K9FkM115CI #,,s+55y5I (
 )""&"

 &F 
&MW  91=mE5)*  2A6mE5)*
 S7  	NNI3PQR	 "f  	LL2A6E	s~   +
S 6T 
U&U>U
U
UU=>V 	T+S<<T	U+T==U	U:U55U:	V/V**V/datac                 f   t        j                  t         j                  j                  t              d       t        dz   }t        |dd      5 }t        j                  | |dd	       d d d        t        j                  |t               t        j                  d
t               y # 1 sw Y   >xY w)NT)exist_okz.tmpwzutf-8)encodingFrZ   )ensure_asciiindentu%   naver-sa-stats.json 저장 완료: %s)osmakedirspathdirname_OUTPUT_PATHopenjsondumpreplacer^   info)r   tmpfs      r   r`   r`      sy    KK-=

C	c3	) 9Q		$a89JJsL!
KK7F9 9s   B''B0c                  6   t        j                  d      } | j                  dt        j                  t
              j                  d      d       | j                  dt        dd	
       | j                         }t        |j                  |j                         y )Nu$   네이버 검색광고 통계 수집)descriptionz--dater*   u   기준 날짜 (YYYY-MM-DD))defaulthelpz--days   u   수집 기간 (일수))typer   r   )argparseArgumentParseradd_argumentr   r=   r>   rB   int
parse_argsr   r,   r)   )parserargss     r   mainr      su    $$1WXF
(,,s*;*D*DZ*PWst
sA<TUDDIItyy!r   __main__)r   N)r   r   r   sysr   r   r   r   insertsa_api_clientr   utils.loggerr   __name__r^   r>   r   rE   rD   dictr    strrK   r   r   r`   r   r   r   r   <module>r      s     	 
 2 2(HHOOA,- ' #	H	yq!"G 	.=>
"$^_
QR^ ^ S T .U# US UT UpG G G" zF r   