
    IwhL                       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
 d dlmZmZmZmZmZ d dlmZmZ ddlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d d	l-m.Z.  e            Z/e/0                    d
e          dEd            Z1e/0                    d          d             Z2e/0                    de           ed           ed          fdFd            Z3dGdZ4dGdZ5e/0                    de           ed           ed            ed            ed            ed           ed!d"d#$          fdHd+            Z6e/0                    d,e          dEd-            Z7e/0                    d.e          dEd/            Z8e/0                    d0e           ed           fdId3            Z9e/0                    d4e          dEd5            Z:e/0                    d6e          dJd8            Z;e/<                    d9e           ed:           ed:           ed:          fdKd=            Z=e/<                    d>e          e/<                    d?e          dJd@                        Z>e/0                    dAe           ed          fdLdB            Z?e/0                    dCe          dEdD            Z@d S )M    )annotations)OptionalListDictAny)datetimedate)defaultdict)	APIRouterRequestQueryFormHTTPException)HTMLResponseRedirectResponse   )	templatessbloggerCOMPANY_ORDER	POS_ORDERTODAY_norm_company_label_normalize_position_parse_date_parts_parts_to_date_fmt_date_display_date_display_and_compare
_is_female_is_kepco_alum_text_today_items_from_ping_status_count_last_24h_current_map_by_person_source_normalize_name_to_int_safe_normalize_multiline_MOTIE_ORDER_POS
_norm_dept
_pos_equal)apply_decisions/)response_classrequestr   c                  K   t          ddddd          }t          ddddd           }||z   }	 t          j        d	                              d
                              dd                              d                                          }|j        pg }n# t          $ r g }Y nw xY wg }t          j
                                                    }|D ]}t          |                    d          p|                    d          pd          d d         }	|	|k    rA|                    |                    d          pd|                    d          |	d           t          d          t!          d          dt          d          t!          d          dt          d          t!          d	          dd}
t#          j        d| |||
d          S )Nmoef_idMOEFtitleurltag)	title_keyurl_keytag_keymotie_idMOTIEkepco_idzdepartment,posted_at,pdf_urlidTdesc   	posted_at
created_at 
   
department-pdf_url)rC   r3   r	   zhttps://www.moef.go.kr)pingcount24https://www.motie.go.krzhttps://www.alio.go.kr)r1   r9   ALIOz
index.html)r.   	gov_todaygroup_todaystatus)r!   r   tableselectorderlimitexecutedata	Exceptionr	   today	isoformatstrgetappendr"   r#   r   TemplateResponse)r.   
moef_todaymotie_todayrJ   res_kk_rowsrK   	today_strrdrL   s              #/var/www/html/bot/app/web/routes.pyindexrb      s     "9fQV`efffJ#J7TYcghhhK[(I$$++,JKKQQRV]aQbbhhilmmuuww!r    K
&&((I o ok""?aeeL&9&9?R@@"E	>>aeeL.A.A.HSQRQVQVW`QaQaklmmnnn &&>??O\eLfLfgg&'@AAo^hNiNijj%&>??O\fLgLghh F
 %l;Z`5 5   s   A*B B+*B+z/healthc                    K   ddiS )NokT re       ra   healthrg   4   s      $<rf   z/gov/searchall)defaultrA   srcrV   qc                  K   |pd                                 }g }|st          j        d| |||d          S 	 t          j        d                              d          }|dv r|                    d|          }d| d}|                    d	| d
| d| d| d| 
          }|                    d          	                                }|j
        pg }n# t          $ r}t          j        d| d           	 t          j        d                              d          }	|dv r|	                    d|          }	|	                    d          	                                j
        pg }
|                                fdfd|
D             }n0# t          $ r#}t          j        d|            g }Y d }~nd }~ww xY wY d }~nd }~ww xY w|                    d            t          j        d| |||d          S )NrA   zgov_search.html)r.   rj   rk   rows	gov_staffz*source,department,position,name,phone,task)r9   r1   source%zname.ilike.z,department.ilike.z,position.ilike.z,task.ilike.z,phone.ilike.  z#gov_staff search fallback (reason: )  c                >     t           fddD                       S )Nc              3  p   K   | ]0}                     |d           pd                                 v V  1dS )rA   NrW   lower).0fkeyr_   s     ra   	<genexpr>z*gov_search.<locals>.hit.<locals>.<genexpr>Q   sE      xx13155B<<#52"<"<">">>xxxxxxrf   )namerC   positiontaskphone)any)r_   rz   s   `ra   hitzgov_search.<locals>.hitP   s+    xxxxxHwxxxxxxrf   c                *    g | ]} |          |S re   re   )rx   r_   r   s     ra   
<listcomp>zgov_search.<locals>.<listcomp>R   s&    ...!ss1vv.A...rf   zgov_staff fallback failed: c                b    |                      dd          pd|                      dd          pdfS )NrC   rA   r|   rW   )r_   s    ra   <lambda>zgov_search.<locals>.<lambda>W   s2    QUU<44:AEE&"<M<M<SQST rf   rz   )stripr   rY   r   rM   rN   eqor_rP   rQ   rR   rS   r   warningrw   errorsort)r.   rj   rk   q_normrm   querykwreseq2rR   e2r   rz   s               @@ra   
gov_searchr   9   sq     g2__F!#D z)*;Y\cisw=x=xyyy%%,,-YZZ###HHXs++E]]]		wwwbwwRTwwbdwwsuwwxxkk$''))x~2   AQAAABBB	+&&--.Z[[B'''UU8S))HHTNN**,,18bD,,..Cy y y y y....t...DD 	 	 	L;r;;<<<DDDDDD	 	IITTIUUU%&7WUX_eos9t9tuuusC   BC 
G
 G9BFG
F=F83G8F==GG
rowDict[str, Any]returnOptional[str]c                8   d}d}|                      d          }|                      d          }|r|sVt          |                      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postIdr;   rA   rD   r      z?searchBbsId1=z&searchNttId1=z&menuNo=)rW   rV   splitlen)r   
DETAIL_URLmenuNor   r   ridpartss          ra   _ensure_moef_urlr   Z   s    ?JFGGGEswwx'8'8f &f &#''$--%2&&#::IIc1%%E5zzQ %v Z ZYYEYYYYQWYYY4rf   c                H    d}|                      d          }|d S | d| dS )NrH   r;   z/kor/article/ATCL6e90bb9de/z/view?r   )r   BASEaids      ra   _ensure_motie_urlr   h   s6    $D
''$--C
{44::s::::rf   z/gov/timelineN      d   )ri   gelestartendpageOptional[int]	page_sizeintc                n  K   |pd                                                                 dd} ||           ||          |pd}g }dd	}	dd
}
|dv r|                     |	                       |dv r|                     |
                       rfdfd|D             }srddfdfd|D             }d }|                    |d           t	          |          }|dz
  |z  }||z   }|||         }||k     }t          j        d| ||pd|pd|pd|||d          S )NrA   sr   r   Optional[date]c                    | sd S t          j        t          |           d d         d                                          S # t          $ r Y d S w xY w)NrB   %Y-%m-%d)r   strptimerV   r	   rS   r   s    ra   _to_datezgov_timeline.<locals>._to_datez   sR    %c!ffSbSk:>>CCEEE%%%%s   ;A 
AAr   List[Dict[str, Any]]c                 v   	 t          j        d                              d                              dd                              d                                          } | j        pg }n0# t          $ r#}t          j	        d|            g }Y d }~nd }~ww xY w|D ]}d|d	<   t          |          |d
<   |S )Nr8   *r;   Tr<   rq   zmotie_id fetch failed: r9   ro   r3   )r   rM   rN   rO   rP   rQ   rR   rS   r   r   r   r   rR   r   r_   s       ra   fetch_motiez!gov_timeline.<locals>.fetch_motie   s    	(:&&--c2288D8IIOOPTUU]]__C8>rDD 	 	 	N8Q88999DDDDDD	  	, 	,A!AhK(++AeHH   A*A- -
B7BBc                 v   	 t          j        d                              d                              dd                              d                                          } | j        pg }n0# t          $ r#}t          j	        d|            g }Y d }~nd }~ww xY w|D ]}d|d	<   t          |          |d
<   |S )Nr0   r   r;   Tr<   rq   zmoef_id fetch failed: r1   ro   r3   )r   rM   rN   rO   rP   rQ   rR   rS   r   r   r   r   s       ra   
fetch_moefz gov_timeline.<locals>.fetch_moef   s    	(9%%,,S117747HHNNtTT\\^^C8>rDD 	 	 	N7A77888DDDDDD	  	+ 	+A AhK'**AeHHr   )r9   rh   )r1   rh   c                    |                      d          pd                                }|                      d          pd                                }|v p|v S )Nr2   rA   r4   rv   )r_   r2   r4   r   s      ra   hit_textzgov_timeline.<locals>.hit_text   sV    UU7^^)r0022E55<<%2,,..CU?3fm3rf   c                *    g | ]} |          |S re   re   )rx   r_   r   s     ra   r   z gov_timeline.<locals>.<listcomp>   &    111qXXa[[1111rf   c                    |                      d          p|                      d          }|r<t          j        t          |          d d         d                                          nd S # t
          $ r Y d S w xY w)Nr?   r@   rB   r   )rW   r   r   rV   r	   rS   )r_   ps     ra   d_ofzgov_timeline.<locals>.d_of   su    k""9aeeL&9&9AMNX)#a&&"+zBBGGIIITXX)))TTT)s   ?A+ +
A98A9c                N     |           }|sdS r|k     rdS r|k    rdS dS NFTre   )r_   r`   r   e_dates_dates     ra   in_rangezgov_timeline.<locals>.in_range   sC    QA"UU2!f**UU2!f**UU4rf   c                *    g | ]} |          |S re   re   )rx   r_   r   s     ra   r   z gov_timeline.<locals>.<listcomp>   r   rf   c                      fd} |d           |d          t                               d          pd          fS )Nc                    t          j        t                              |           pd          d d         d                                          S # t
          $ r t          j        cY S w xY w)NrA   rB   r   )r   r   rV   rW   r	   rS   min)kr_   s    ra   d_tryz-gov_timeline.<locals>.sort_key.<locals>.d_try   s^     )#aeeAhhn"*=*=crc*BJOOTTVVV---TXooo-s   AA A,+A,r?   r@   r;   rA   )rV   rW   )r_   r   s   ` ra   sort_keyzgov_timeline.<locals>.sort_key   sV    	. 	. 	. 	. 	. k""EE,$7$7QUU4[[=NB9O9OPPrf   Trz   reversezgov_timeline.html)r.   rj   rk   r   r   r   rm   has_more)r   r   r   r   )r   r   )r   r   )r   rw   extendr   r   r   rY   )r.   rj   rk   r   r   r   r   r   itemsr   r   r   total	start_idxend_idx	page_rowsr   r   r   r   r   r   r   s                    @@@@@@ra   gov_timeliner   n   s      g2__$$&&F& & & &
 Xe__Fxx}}f91D"$E
 
 
 

 
 
 
 ou||KKMM:::
nu||JJLL999 2	4 	4 	4 	4 	4 2111E111 2 2	* 	* 	* 	*	 	 	 	 	 	 	 2111E111Q Q Q
 
JJ8TJ***JJEa"I)#Gi'(IH%&9b5;BsybiX< <   rf   z/group/timelinec                  K   	 t          j        d                              d                              d                                          }|j        pg }n0# t          $ r#}t          j        d|            g }Y d }~nd }~ww xY wd t          t                    D             dfd
dd|                    fd           t          j        d| |d          S )Nr:   z'department,posted_at,pdf_url,created_ati  zkepco_id fetch failed: c                    i | ]\  }}||	S re   re   )rx   ir|   s      ra   
<dictcomp>z"group_timeline.<locals>.<dictcomp>   s    AAAWQqAAArf   dep
str | Noner   r   c                R    t          |           }                    |pdd          S )NrA   i  )r   rW   )r   label	order_maps     ra   
dept_orderz"group_timeline.<locals>.dept_order   s(    #C((}}U[b#...rf   any_sr   r	   c                    t          | t          |           nd          \  }}}t          |||d          pt          j        S )NrA   Tassume_last)r   rV   r   r	   r   )r   ymr`   s       ra   parse_dtz group_timeline.<locals>.parse_dt   sB    #%2CCJJJLL1aaA4888DDHDrf   c                     |                      d                     |                      d                                                     fS )NrC   r?   )rW   	toordinal)r_   r   r   s    ra   r   z group_timeline.<locals>.<lambda>   sG    ZZl(;(;<<xxkHZHZ?[?[?e?e?g?g>gh rf   r   zgroup_timeline.html)r.   rm   )r   r   r   r   )r   r   r   r	   )r   rM   rN   rP   rQ   rR   rS   r   r   	enumerater   r   r   rY   )r.   r   rm   r   r   r   r   s       @@@ra   group_timeliner      s/     hz""))*STTZZ[_``hhjjx~2   444555 BA	-(@(@AAAI/ / / / / /E E E E 	IIhhhhhIiii%&;Z^=_=_```s   AA 
B
'BB
z/group/executivec                  K   	 t          j        d                              d                              d                                          }|j        pg }n0# t          $ r#}t          j        d|            g }Y d }~nd }~ww xY wd t          D             d t          D             d t          D             |D ]}|
                    d          pd	                                }t          |          }|vr@|xx         d
z  cc<   t          |
                    d                    r|xx         d
z  cc<   t          |
                    d                    }|t          |
                    d                    \  }}	}
t          |
                    d                    \  }}}t!          |||d          }t#          |o
|t$          k               }t'          |          }||d<   t)          |
                    d                    |d<   t+          ||	|
          |d<   t+          |||          |d<   t          |
                    d                    rdn|
                    d          rdnd}|
                    d          pd                                }|dk    r| d| dn||d<   |         |                             |           d(d!}t          D ])}d"D ]$}|         |                             |#           %*fd$t          D             }t          fd%t0          D             }t3          j        d&| ||d'          S ))N	kepco_orgr   rs   kepco_org fetch failed: c                2    i | ]}|d  t           D             S )c                    i | ]}|g S re   re   )rx   r   s     ra   r   z.group_executive.<locals>.<dictcomp>.<dictcomp>   s    0I0I0I!20I0I0Irf   )r   rx   cs     ra   r   z#group_executive.<locals>.<dictcomp>   s)    -a-a-aaa0I0Iy0I0I0I-a-a-arf   c                    i | ]}|d S r   re   r   s     ra   r   z#group_executive.<locals>.<dictcomp>       000QQq000rf   c                    i | ]}|d S r   re   r   s     ra   r   z#group_executive.<locals>.<dictcomp>   r   rf   rC   rA   r   genderr}   r   r   Tr   _expiredcareer_is_kepco_alum_start_disp	_end_dispu   여u   남rD   r|   (rr   
_name_liner   dictr   r	   c                    t          |                     d                    \  }}}t          |||d          pt          j        S )Nr   Fr   )r   rW   r   r	   r   )r   r   r   r`   s       ra   	start_keyz"group_executive.<locals>.start_key  s=    #AEE'NN331aaA5999ETXErf   )u   상임이사u   비상임이사r   c                2    g | ]}|         |         d S ))femaler   re   )rx   r   female_countstotal_countss     ra   r   z#group_executive.<locals>.<listcomp>  s*    bbbq}Q/,q/JJbbbrf   c                6    g | ]fd D             dS )c                ,    g | ]}|                  S re   re   )rx   r   gridr   s     ra   r   z.group_executive.<locals>.<listcomp>.<listcomp>  s!    -J-J-JQd1gaj-J-J-Jrf   )r}   cellsre   )rx   r   columnsr  s    @ra   r   z#group_executive.<locals>.<listcomp>  s;    ___PQ-J-J-J-J-J'-J-J-JKK___rf   zgroup_executive.html)r.   r  rm   gender_stats)r   r
  r   r	   )r   rM   rN   rP   rQ   rR   rS   r   r   r   rW   r   r   r   r   r   r   boolr   r
  r    r   rX   r   r   r   rY   )r.   r   rawr   r_   dep_rawr   pos_normy1m1d1y2m2d2end_dtexpiredpersonr  r|   r  r   r  rows_for_tplr  r  r  r  s                          @@@@ra   group_executiver%     s     h{##**3//55d;;CCEEhn"   333444 .b-aS`-a-a-aD00-000M00-000L + +55&&,"3355!'**d??SQaeeHoo&& 	$#!#&quuZ'8'899&quuW~~66
B&quuU||44
BB===v0&5.11a$z#6quuX#G#G  1"b" = =}/B;;{$QUU8__55^QUU8__<]EEZ]f$++--6<mm$222222|S	(""6****F F F F  - -3 	- 	-AIaL),,,,	- cbbbbTabbbLG_____U^___L%&<wVb? ?      AA 
B(BBz/group/executivescompanyr   c                2  K   	 t          j        d                              d                              d                                          }|j        pg }n0# t          $ r#}t          j        d|            g }Y d }~nd }~ww xY wt          d d          }|t          v r|n|d         dd
           dfdfd|D             }|s|rfd|D             }g }|D ]}|
                    d          p+|
                    d          p|
                    d          pd                                pd}	t          |
                    d                    \  }
}t          |
                    d                    \  }}t          |o
|t          k               }i ||	|
||t          |
                    d                    d}|                    |           |                    d            t%          j        d| ||d          S )Nr   r   '  r   r   r   r   r   rV   c                V    | pd                     dd                                          S )NrA    )replacer   r   s    ra   _keyz%group_executives_detail.<locals>._key#  s(    R  R((..000rf   r   r  c                    | sdS  |           }|k    rdS t          |           }|r |          k    rdS |v p|v S r   )r   )r   dep_keynormr-  cur_keys      ra   _matchesz)group_executives_detail.<locals>._matches(  sg     55$s))gdd"3''6DDJJ'))$$'!7W%77rf   c                P    g | ]"} |                     d                      |#S rC   r   )rx   r_   r2  s     ra   r   z+group_executives_detail.<locals>.<listcomp>0  s4    @@@a((155+>+>"?"?@@@@rf   c                f    g | ]-}            |                     d                     v +|.S r4  r   )rx   r_   r-  currents     ra   r   z+group_executives_detail.<locals>.<listcomp>2  sA    QQQ!dd7mmttAEE,<O<O7P7P&P&PA&P&P&Prf   r~   r2   r}   rD   r   r   r  )_task
_start_str_end_strr  _career_strc                F    t          |                     d                    S )Nr;   )r&   rW   )xs    ra   r   z)group_executives_detail.<locals>.<lambda>>  s    QUU4[[ 9 9 rf   r   zgroup_executive_detail.html)r.   tabsr6  rm   )r   r   r   rV   )r   r   r   r  )r   rM   rN   rP   rQ   rR   rS   r   r   r   rW   r   r   r  r   r'   rX   r   r   rY   )r.   r'  r   r  r   r=  cur_rowsenrichedr_   r~   
start_disp	start_cmpend_dispend_cmpr"  r#  r-  r2  r1  r6  s                   @@@@ra   group_executives_detailrD    s     h{##**3//55e<<DDFF(.b   333444 D M11ggtAwG1 1 1 1 d7mmG8 8 8 8 8 8 8 A@@@3@@@H R RQQQQQsQQQH    fKwK1553D3DKRRTT[X[ 9!%%.. I I
I5aeeEllCC'w27U?33]A ]JH%6J155QY??6[6[] ] ]MM99M:::%&CDWhF F   r&  z/syncc           	       K   t          j        d                              d                              dd                              d                                          j        pg }|st          j        d| g i i d          S d	 |D             }t          j        d
                              d          	                    d|                                          j        pg }t          d           }|D ]$}||d                  |d         xx         dz  cc<   %t          j        d                              d          	                    d|                                          j        pg }t          t                    }|D ]1}|                    d          dk    r||d         xx         dz  cc<   2t          j        d| |t          |          t          |          d          S )Ningest_batchesr   
started_atTr<   r   zsync_index.html)r.   rm   event_statspending_statsc                H    g | ]}|                     d           |d           S )batch_idr   )rx   bs     ra   r   zsync_index.<locals>.<listcomp>L  s-    EEE11553D3DE:EEErf   gov_staff_eventszbatch_id,event_typerK  c                 *    t          t                    S )N)r
   r   re   rf   ra   r   zsync_index.<locals>.<lambda>N  s    k#&6&6 rf   
event_typer   match_decisionszbatch_id,decisiondecisionPENDING)r   rM   rN   rO   rP   rQ   rR   r   rY   in_r
   r   rW   r
  )	r.   batches	batch_idsevrH  r   decrI  r`   s	            ra   
sync_indexrX  D  s     h'((//44::<d:SSYYZ\]]eegglrprG )*;2PR>
 >
   	 FEEEEI	$	%	%	,	,-B	C	C	G	G
T]	^	^	f	f	h	h	m	sqsB6677K 9 9AjM"1\?333q83333
($
%
%
,
,-@
A
A
E
EjR[
\
\
d
d
f
f
k
qoqC$$M . .55	))!J-(((A-(((%&7GK((4;N;N: :   rf   z/sync/batch/{batch_id}rK  c           
     \  K   t          j        d                              d                              d|                              d                                          j        pg }t          j        d                              d                              d|                              d                              dd                              d	                                          j        pg }t          j        d
                              d                              d|                                          j        pg }d |D             }t                      }i }|D ]1}|	                    |d         g           
                    |           2g g }
}	|D ]U}|d         }|                    d          }|                    |          }g }|                    |g           D ]}|                    d          }|                    ||f          }t          |pi                     d                    t          |                    d                    k    rD|
                    ||                    d          ||pi                     d          pdd           |||d}|r0|                    d          dk    r|

                    |           @|	
                    |           Wt          j        d                              d                              d|                              d                                          j        pg }t          |          }t          |	          }t          |
          }t          j        d| ||||d|	|
|d          S )Nstaging_gov_staffr   rK  
staging_idmatch_candidatesscoreTr<   r)  rP  c                     i | ]}|d          |S )r[  re   )rx   r_   s     ra   r   zsync_batch.<locals>.<dictcomp>c  s    ;;;Qaoq;;;rf   ro   candidate_person_idr|   rD   )	person_idr]  prev_ctxr|   )staging
candidatesrQ  rQ  AUTOrM  event_idzsync_batch.html)r   pendingauto)r.   rK  cardsrows_pending	rows_autoevents)r   rM   rN   r   rO   rQ   rR   rP   r$   
setdefaultrX   rW   r%   r   r   rY   )r.   rK  st	cand_rowsdec_rowsdec_by_stagingcur_mapcands_by_str   ri  rj  r   r[  rj   rW  	same_namepidprevitemconfirmed_eventsr   cnt_pendingcnt_autos                          ra   
sync_batchrz  ]  s     	%	&	&	-	-c	2	2	5	5j(	K	K	Q	QR^	_	_	g	g	i	i	n	trtB+,,33C88	J	!	!%%"5"5eeG$e6O6OPUPUV[P\P\]d]d]f]fgkroq x)**11#6699*hOOWWYY^dbdH;;(;;;N+--G#%K > >q33::1==== ")L ( (|_
eeHoo  ,,	R00 	 	A%%-..C;;Sz**D
//7788OAEERXMM<Z<ZZZ  !$quuW~~ $tzr.>.>v.F.F.M#" "   
 I3GG 	(377:&&&00)2B2B42H2H2H2H!!$''''x 233::3??BB:xXX^^_ijjrrtty}GGE3|#4#4[Yh%&7 [(KK$9"	: :   rf   z/sync/decide.r[  choicec                8  K   d}d }d}d }|dk    rd}n/|dk    rd}d}d}n"t          |          }n# t          $ r d }Y nw xY w||||||d	}t          j        d
                              |d                                           t          d| dd          S )NMANUALg      ?__NEW__z
manual-new__SKIP__SKIPg        zmanual-skip)rK  r[  rQ  r`  r]  	rationalerP  zbatch_id,staging_id)on_conflict/sync/batch/z?saved=1i.  )status_code)r   rS   r   rM   upsertrQ   r   )	r.   rK  r[  r{  rQ  r`  r]  r  payloads	            ra   sync_decider    s       HT35D	 			:		35M		VYY***d)))* JHY G H&&w<Q&RRZZ\\\=8===3OOOOs   1 A A z/sync/batch/{batch_id}/applyz/sync/apply/{batch_id}c                N   K   t          |           t          d| dd          S )Nr  z
?applied=1i/  )r3   r  )r+   r   )r.   rK  s     ra   sync_apply_batchr    s6       H Cx C C CQTUUUUrf   z/org/motie/headsc           
     Z  K   	 t          j        d                              d                              d                                          j        pg }n# t          $ r g }Y nw xY wt          t                    }|D ]=}|t          |
                    d                                                 |           >|pd                                                                }g }t          D ]!\  }}|dk    rt          |          }	|
                    |	g           }
fd|
D             }dd}|rt          ||d          d         nd }|r|
                    d          nd pd}|r|
                    d          nd p}|r|
                    d          nd pd}|r|
                    d          nd pd}|||||||rdndd}|r.|d                    |||||g                                          v r|                    |           #t#          j        d| d||d          S )N	motie_orgz#department,position,name,phone,taskiP  rC   rA   u   장관정책보좌관c                Z    g | ]'}t          |                    d                     %|(S )r}   )r*   rW   )rx   r_   expected_poss     ra   r   z+org_motie_heads_ordered.<locals>.<listcomp>  s4    PPPqJquuZ/@/@,$O$OPPPPrf   r_   r
  r   tuplec                    |                      d          r6t          |                      d                                                    rdnd}|                      d          pd}||fS )Nr   r   r   r|   rA   )rW   rV   r   )r_   	has_phoner|   s      ra   rankz%org_motie_heads_ordered.<locals>.rank  s]    eeGnnTQUU7^^1D1D1J1J1L1LTSTIEE&MM'RDt$$rf   Tr   r   r|   u   (공석)r}   r   rD   r~   z
org-strictnone)unitindentr|   r}   r   r~   	_expected_srcr+  zorg_heads.htmlu   산업통상자원부(MOTIE))r.   ministryrk   r   )r_   r
  r   r  )r   rM   rN   rP   rQ   rR   rS   r
   listr)   rW   rX   r   rw   r(   sortedjoinr   rY   )r.   rk   orgby_deptr_   rz   r   r  r  dept_keypoolcandsr  pickedr|   posr   r~   r   r  s                      @ra   org_motie_heads_orderedr    s     h{##**+PQQWWX]^^ffhhmsqs    &1%6%6G ; ;
155..//077::::7//


!
!
#
#CE&6  "fl***d##{{8R((PPPPDPPP	% 	% 	% 	%
 >CL4666q99'-7F###4FJ+1;J'''tL(.8G$$$D@S'-7F###4?C FcE4%0RF
 
  	cchhdC'EFFLLNNOOLL%)GaZ_``  s   AA A('A(z/tools/auto-lecturec                4   K   t          j        dd| i          S )Nztools_auto_lecture.htmlr.   )r   rY   )r.   s    ra   tools_auto_lecturer    s      %&?)WAUVVVrf   )r.   r   )r.   r   rj   rV   rk   rV   )r   r   r   r   )r.   r   rj   rV   rk   r   r   r   r   r   r   r   r   r   )r.   r   r'  r   )r.   r   rK  rV   )r.   r   rK  rV   r[  r   r{  rV   )r.   r   rk   rV   )A
__future__r   typingr   r   r   r   r   r	   collectionsr
   fastapir   r   r   r   r   fastapi.responsesr   r   corer   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   app.sync2.pipeliner+   routerrW   rb   rg   r   r   r   r   r   r%  rD  rX  rz  postr  r  r  r  re   rf   ra   <module>r     s   " " " " " " , , , , , , , , , , , , # # # # # # # # # # # # # # B B B B B B B B B B B B B B < < < < < < < <                                                    / . . . . .	 C--   .-6 I   M,7727%2F2F2FQVQV_aQbQbQb v v v v 87v@   ; ; ; ; OL99 uU###uT*** 5...t,,,%***U2!444T T T T :9Tn l;;a a a <;a( |<<9 9 9 =<9v ==JO%X\J]J]J] ) ) ) ) >=)X GL11   210 $\BB( ( ( CB(T ^L99 DIId3ii$s))	P P P P :9P, +<LMM%6FGGV V V HG NMV
 |<<=BU2=N=N=N . . . . =<.b !,??W W W @?W W Wrf   