o
    hs                     @  s   d dl mZ d dlmZ d dlmZ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mZmZmZ e	 ZdddZdddZejdededdfdddZdS )    )annotations)date)AnyDictList)	APIRouterRequestQuery)HTMLResponse)	templatessbCOMPANY_ORDER_norm_company_label_parse_date_parts_parts_to_dateany_sr   returnr   c                 C  s4   t | d ur	t| nd\}}}t|||ddptjS )N T)assume_last)r   strr   r   min)r   ymd r   1/var/www/html/bot/app/web/pages/group/timeline.py	_parse_dt   s   r   rowDict[str, Any]c                 C  s   |  dp	|  dS )N	posted_at
created_atget)r   r   r   r   _posted_or_created      r#   z/group/timeline)response_classN)defaultrequestr   company
str | Nonec              	     st  zt ddd }|jpg }W n ty    g }Y nw i }|D ]2}|d}t|p5|p3d	 }|s9q%||}|du rG|||< q%t
t|t
t|krW|||< q%t| }	dd ttD dfdd|	jfddd tdd }
||
v r|n|
r|
d nd}d dd  |d! fddfdd|D }|jdd d td| |	|
||dS )"u   
    상단: 기관별 최신 1건만 보여주는 스냅샷 테이블
    하단: 회사(기관) 탭별 전체 이력 테이블 (최신이 위)
    kepco_idz'department,posted_at,pdf_url,created_ati  
departmentr   Nc                 S  s   i | ]\}}||qS r   r   ).0inamer   r   r   
<dictcomp>9   s    z"group_timeline.<locals>.<dictcomp>depr)   r   intc                   s   t | } |p	ddS )Nr   i  )r   r"   )r0   label)	order_mapr   r   
dept_order;   s   z"group_timeline.<locals>.dept_orderc                   s     |  dtt|   fS )Nr+   )r"   r   r#   	toordinalr)r4   r   r   <lambda>@   s   z group_timeline.<locals>.<lambda>)keyr   sr   c                 S  s   | pd dd S )Nr    )replacestrip)r:   r   r   r   _keyJ   r$   zgroup_timeline.<locals>._keyboolc                   sH   | sdS  | }|krdS t | }|r |krdS |v p#|v S )NFT)r   )r0   dep_keynorm)r>   cur_keyr   r   _matchesO   s   z group_timeline.<locals>._matchesc                   s   g | ]} | d r|qS )r+   r!   )r,   r7   )rC   r   r   
<listcomp>[   s    z"group_timeline.<locals>.<listcomp>c                 S  s   t t|   S )N)r   r#   r5   r6   r   r   r   r8   ]   s    zgroup/timeline.html)r'   	rows_maintabscurrent	comp_rows)r0   r)   r   r1   )r:   r)   r   r   )r0   r)   r   r?   )r   tableselectlimitexecutedata	Exceptionr"   r   r=   r   r#   listvalues	enumerater   sortr   TemplateResponse)r'   r(   resall_rows
latest_mapr7   r0   r9   currE   rF   rG   rH   r   )r>   rC   rB   r4   r3   r   group_timeline   sZ   




rX   )r   r   r   r   )r   r   r   r   )r'   r   r(   r)   )
__future__r   datetimer   typingr   r   r   fastapir   r   r	   fastapi.responsesr
   app.web.depsr   r   r   r   r   r   routerr   r#   r"   rX   r   r   r   r   <module>   s     

