o
    h                     @  s   d dl mZ d dlmZmZ d dl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mZmZ e ZedZd"ddZd#ddZd$dd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datetimeN)	APIRouterRequestQuery)HTMLResponse)	templatessbCOMPANY_ORDERTODAY_date_display_and_compare_to_int_safe_normalize_multiline_norm_company_labelu   ^\s*\(?공석\)?\s*$name
str | Nonereturnboolc                 C  s*   | sdS t |  }t|rdS |dv S )NFT>      결원-)strstripVACANCY_PATmatch)r   s r   0/var/www/html/bot/app/web/pages/group/history.py_is_vacant_name   s   
r   r   r   c                 C  s   | pd dd S )N  )replacer   )r   r   r   r   _key   s   r"   date | Nonec                 C  s   | du rdS t | trt | ts| S t | tr|  S t | tr@| d }| d d }| d }zt|||W S  ty?   Y dS w t | trq|  }|sMdS z|dd d\}}}tt|t|t|W S  typ   Y dS w dS )z=int(yyyymmdd) | 'YYYY-MM-DD' | date | datetime -> date | NoneNi'  d   
   r   )
isinstancer   r   int	Exceptionr   r   split)vymdr   r   r   r   _to_date   s4   


r.   r-   c                 C  s   | r| dS dS )Nz%Y-%m-%dr   r   r-   r   r   r   	_fmt_date7   s   r0   c                 C  s(   | sd S | j  d| jdd| jddS )Nu   년 02du   월 u   일)yearmonthdayr/   r   r   r   _fmt_date_kor:   s    r5   z/group/history)response_class)defaultrequestr   companyc           '        s  zt ddd }|jpg }W n ty    g }Y nw td d  }|tv r-|n|d td/fd	d
  fdd|D }|sR|rRfdd|D }dd |D }g }|D ]}|	dpo|	dpo|	dpod
 psd}t|	d\}	}
t|	d\}}t|	d\}}t|	d\}}t|
pt|	d}t|pt|	d}t|pt|	d}t|pt|	d}i |||	pt||pt||pt||||t|	d|r|pt|nd d d
}t|	d |d< || q]i }|D ]"}t|	dt|	d|	d|	df}||g | q| D ]\}}|jdd  d! d }|rA|d 	dnd }t|D ]<\}}|	d"pRd}|dkr\|}qG|	d#} |}!| r|!r| |!kr|r||kr||d$< t| |d%< |}qGt|D ]:\}"}#|#	d&sqd }$t|"d' d(d(D ]}%||% }&|&	d&rq|&	dr|&	d}$ nqt|$|#d)< qq)|jd*d  d+d, td-| ||d.S )0Nkepco_history*i N  r   depr   r   r   c                   sH   | sdS t | }| krdS t| }|rt | krdS  |v p#| v S )NFT)r"   r   )r<   dep_keynorm)cur_keyr   r   _matchesL   s   zgroup_history.<locals>._matchesc                   s   g | ]} | d r|qS 
department)get.0r)r@   r   r   
<listcomp>W       z!group_history.<locals>.<listcomp>c                   s&   g | ]}t  t |d v r|qS rA   )r"   rC   rD   )currentr   r   rG   Y   s   & c                 S  s,   g | ]}t |d rt|dr|qS )r   rI   )r   rC   r   rD   r   r   r   rG   \   s    tasktitlepositionr   startend	posted_at
actual_endcareer)
_task
_start_str_end_str_posted_str_start_date	_end_date_posted_date_career_str_actual_end_str_actual_end_reasonrI   	_inactiverB   r   rV   rW   c                 S     |  dptjt|  dfS NrX   idrC   r   minr   xr   r   r   <lambda>   rH   zgroup_history.<locals>.<lambda>)keyrR   rX   _title_change_from_title_change_atextended   _extended_prev_end_korc                 S  r]   r^   r`   rb   r   r   r   rd      rH   T)re   reversezgroup/history.html)r8   tabsrI   rows)r<   r   r   r   )r
   tableselectlimitexecutedatar(   r   r"   rC   r   r   r.   r0   r   r   append
setdefaultitemssort	enumerateranger5   r	   TemplateResponse)'r8   r9   resrawrm   cur_rowsenrichedrF   rJ   
start_disp	start_cmpend_dispend_cmpposted_disp
posted_cmpactual_end_dispactual_end_cmpstart_dend_dposted_dactual_end_ditemgroupspgkey_rv   	prev_taskfirst_startidxitcur_taskpdsdicurprev_end_datejprevr   )r@   r?   rI   r   group_history?   s   *


 

&
r   )r   r   r   r   )r   r   r   r   )r   r#   )r-   r#   r   r   )r-   r#   r   r   )r8   r   r9   r   )
__future__r   r   r   refastapir   r   r   fastapi.responsesr   app.web.depsr	   r
   r   r   r   r   r   r   routercompiler   r   r"   r.   r0   r5   rC   r   r   r   r   r   <module>   s   (





