o
    WHhm                     @  s   d dl mZ d dlmZmZmZmZ d dlmZmZ d dl	m
Z
mZmZ d dlmZ d dlmZmZmZ e
 Zd(ddZd(ddZd(ddZejdededdeddeddeddeddeddddfd)d&d'ZdS )*    )annotations)OptionalListDictAny)datetimedate)	APIRouterRequestQuery)HTMLResponse)	templatessbloggerrowDict[str, Any]returnOptional[str]c                 C  s   d}d}|  d}|  d}|r|s/t|  dpd}d|v r/|dd}t|d	kr/|\}}|r@|r@| d
| d| d| S d S )Nz,https://www.moef.go.kr/nw/notice/hrDetail.do4050300bbsIdpostIdid -      z?searchBbsId1=z&searchNttId1=z&menuNo=)getstrsplitlen)r   
DETAIL_URLmenuNor   r   ridparts r$   //var/www/html/bot/app/web/pages/gov/timeline.py_ensure_moef_url
   s   r&   c                 C  s*   d}|  d}|d u rd S | d| dS )Nzhttps://www.motie.go.krr   z/kor/article/ATCL6e90bb9de/z/view?r   )r   BASEaidr$   r$   r%   _ensure_motie_url   s   
r*   c                 C  s.   d}d}|  d}|sd S | | d| dS )Nzhttps://me.go.krz/home/web/board/read.dor   z	?boardId=z&menuId=10527&boardMasterId=22r'   )r   r(   PATHr"   r$   r$   r%   _ensure_me_url   s   
r,   z/gov/timeline)response_classall)defaultNr         d   )r/   gelerequestr
   srcr   qstartendpageOptional[int]	page_sizeintc                   s  |pd   d%dd}|||||pd}g }d&d
d}	d&dd}
d&dd}|dv r5||	  |dv r?||
  |dv rI||  |D ]$}|dso|drozt|d d d |d< W qK tyn   Y qKw qKrfddfdd|D }srd'dd  fddfdd|D }dd  }|j|d!d" t|}|d | }|| }||| }||k }t	d#| ||pd|pd|pd|||d$S )(Nr   sr   r   Optional[date]c                 S  s<   | sd S zt t| d d d W S  ty   Y d S w )N
   %Y-%m-%d)r   strptimer   r   	Exception)r>   r$   r$   r%   _to_date3   s    zgov_timeline.<locals>._to_dater   List[Dict[str, Any]]c               
   S     zt ddjdddd } | jpg }W n ty5 } zt	d|  g }W Y d }~nd }~ww |D ]}d|d	< t
||d
< q8|S )Nmotie_id*r   Tdesc  zmotie_id fetch failed: MOTIEsourceurl)r   tableselectorderlimitexecutedatarC   r   warningr*   resrT   err$   r$   r%   fetch_motie<      $z!gov_timeline.<locals>.fetch_motiec               
   S  rF   )Nmoef_idrH   r   TrI   rK   zmoef_id fetch failed: MOEFrM   rN   )r   rO   rP   rQ   rR   rS   rT   rC   r   rU   r&   rV   r$   r$   r%   
fetch_moefH   r[   z gov_timeline.<locals>.fetch_moefc               
   S  s   zt ddjdddd } | jpg }W n ty5 } zt	d|  g }W Y d }~nd }~ww |D ]}d|d	< |
d
pFt||d
< q8|S )Nme_idrH   r   TrI   rK   zme_id fetch failed: MErM   rN   )r   rO   rP   rQ   rR   rS   rT   rC   r   rU   r   r,   rV   r$   r$   r%   fetch_meT   s   $zgov_timeline.<locals>.fetch_me)rL   r.   )r]   r.   )r`   r.   	posted_at
created_atr@   c                   s4   |  dpd }|  dpd } |v p |v S )Ntitler   tag)r   lower)rY   rd   re   )q_normr$   r%   hit_textm   s   zgov_timeline.<locals>.hit_textc                      g | ]} |r|qS r$   r$   .0rY   )rh   r$   r%   
<listcomp>q       z gov_timeline.<locals>.<listcomp>c                 S  sR   |  dp	|  d}z|rtt|d d d W S d W S  ty(   Y d S w )Nrb   rc   r@   rA   )r   r   rB   r   r   rC   )rY   pr$   r$   r%   d_oft   s   *zgov_timeline.<locals>.d_ofc                   s4    | }|sdS r|k rdS r|krdS dS )NFTr$   )rY   d)ro   e_dates_dater$   r%   in_rangex   s
   zgov_timeline.<locals>.in_rangec                   ri   r$   r$   rj   )rs   r$   r%   rl   ~   rm   c                   s,    fdd}|d|dt  dpdfS )Nc                   sB   zt t | p
dd d d W S  ty    tj Y S w )Nr   r@   rA   )r   rB   r   r   r   rC   min)krY   r$   r%   d_try   s   *z-gov_timeline.<locals>.sort_key.<locals>.d_tryrb   rc   r   r   )r   r   )rY   rw   r$   rv   r%   sort_key   s    zgov_timeline.<locals>.sort_keyT)keyreversezgov/timeline.html)r5   r6   r7   r8   r9   r:   rowshas_more)r>   r   r   r?   )r   rE   )r   r?   )
striprf   extendr   r   rC   sortr   r   TemplateResponse)r5   r6   r7   r8   r9   r:   r<   rD   itemsrZ   r^   ra   rY   rx   total	start_idxend_idx	page_rowsr|   r$   )ro   rq   rh   rs   rg   rr   r%   gov_timeline'   sN   





r   )r   r   r   r   )r5   r
   r6   r   r7   r   r8   r   r9   r   r:   r;   r<   r=   )
__future__r   typingr   r   r   r   r   r   fastapir	   r
   r   fastapi.responsesr   app.web.depsr   r   r   routerr&   r*   r,   r   r   r$   r$   r$   r%   <module>   s$    


	