
    Si                    2   d Z ddlmZ ddlZddlmZ ddlmZ  ed      Zedz  Z	e	dz  Z
e	d	z  d
z  Ze	d	z  ZddZd dZd!dZ	 	 	 	 	 	 d"dZd#dZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d$dZ	 	 	 d%	 	 	 	 	 	 	 d&dZedk(  r ed        ed        ede d        ede         ed        e       Z ed ee       d        ee      D ]B  Z ee      j5                         j6                  Z ed ee      j:                   dedd       D  ed       yy)'u   
공통 유틸리티: 조직 구조에서 팀별 상세 JSON 파일 동적 생성
작성자: 카르티케야 (Kartikeya) - dev4팀 백엔드 개발자
    )annotationsN)Path)Anyz/home/jay/workspacememoryorganization-structure.jsonzorg-detailsz"organization-structure.backup.jsonc                    	 t        | dd      5 }t        j                  |      cd d d        S # 1 sw Y   y xY w# t        t        j                  f$ r Y y w xY w)Nrutf-8encoding)openjsonloadFileNotFoundErrorJSONDecodeError)pathfs     R/home/jay/workspace/.worktrees/task-2117-dev1/teams/shared/generate_org_details.py
_load_jsonr      sQ    $g. 	 !99Q<	  	  	 t334 s#   ; /	; 8; ; AAc                T   i dfd}| j                  di       }|j                  di       j                  dg       D ]  }dD ]-  }t        |j                  |      t              s# |||          / |j                  dg       D ]  }t        |t              s ||        |j                  dg       D ]m  }t        |t              st        |j                  d      t              r ||d          |j                  dg       D ]  }t        |t              s ||        o  |j                  d	i       j                  d
g       D ]\  }t        |j                  d      t              r ||d          |j                  dg       D ]  }t        |t              s ||        ^ S )uH   id → 멤버 객체 조회 테이블 구성 (모든 팀/센터 순회).c                8    | j                  d      x}r| |<   y y )Nidget)objmidlookups     r   _idxz_build_lookup.<locals>._idx    s$    ''$-3F3K      	structurecolumnsteams)leadoffice_leaddirect_workermembers	sub_teamsr#   rowscenters)r   dict[str, Any]returnNone)r   
isinstancedict)	datar   r    teamkeymsubcenterr   s	           @r   _build_lookupr5      s   (*F b)Ii,00"=  ; 	 C$((3-.T#Y	  )R( 	A!T"Q	 88K, 	 C#t$cggfot4V%B/  A!!T*Q 		   --+//	2> fjj($/ Ir* 	A!T"Q	 Mr   c                F    | j                  d      }|r||vr| S i | ||   S )u_   base 객체를 백업 조회 테이블 데이터로 보강 (백업 우선, base 필드 보존).r   r   )baser   r   s      r   _enrichr8   <   s2    
((4.C#V#"d"fSk""r   c                    | D ci c]1  }t        |t              rt        ||      x}j                  dd      |3 c}S c c}w )Nr   unknown)r-   r.   r8   r   )r&   r   r2   es       r   _members_detailr<   D   sL    
 a a 	 %%dI69  s   6>c                    | j                   j                  dd       t        | dd      5 }t        j                  ||dd       d d d        y # 1 sw Y   y xY w)	NT)parentsexist_okwr
   r   F   )ensure_asciiindent)parentmkdirr   r   dump)r   r/   r   s      r   _write_jsonrG   N   sN    KKdT2	dC'	* 9a		$a89 9 9s   AAc                ~    | |d||d}t        |t              rt        ||      ni }|r||d<   t        ||      |d<   |S )Nr   )team_id	team_nameextracted_fromstatustyper#   members_detail)r-   r.   r8   r<   )	rI   rJ   rL   	team_typelead_rawr&   r   payloadr#   s	            r   _make_payloadrR   T   sV     7G )38T(B78V$D / @GNr   c                   | rt        |       nt        }|rt        |      nt        }|rt        |      nt        }t	        |      }|t        d|       t	        |      }t        ||n|      }g }	|j                  di       }
|
j                  di       j                  dg       D ]  }|j                  dd      }|dk(  r|j                  d      xs g D ]  }|j                  d	      }|s|t        |      j                  z  }t        |j                  d
|j                        |j                  dd      |j                  dd      d|j                  d      xs i |j                  d      xs g |      }t        ||       |	j                  t        |              |j                  d	      }|s|t        |      j                  z  }t        ||j                  dd      |j                  dd      |j                  dd      |j                  d      xs i |j                  d      xs g |      }t        ||       |	j                  t        |              |
j                  di       j                  dg       D ]  }|j                  d	      }|s|t        |      j                  z  }t        |j                  d|j                        |j                  dd      |j                  dd      |j                  dd      |j                  d      xs i |j                  d      xs g |      }t        ||       |	j                  t        |              |	S )z
    Generate individual detail JSON files for all sub_teams in development-office.
    Returns list of generated file paths.
    u1   메인 조직 파일을 찾을 수 없습니다: r    r!   r"   rI    zdevelopment-officer'   detail_pathsub_team_idsub_team_namerL   activephysicalr#   r&   )rI   rJ   rL   rO   rP   r&   r   rJ   rM   logicalr(   r)   	center_idcenter_name)r   DEFAULT_ORG_FILEDEFAULT_BACKUP_FILEDEFAULT_OUTPUT_DIRr   r   r5   r   namerR   stemrG   appendstr)org_filebackup_file
output_dirorg_pathbackup_pathout_dir	main_databackup_datar   	generatedr    r0   rI   r3   dpoutrQ   r4   s                     r   generate_all_sub_team_detailsro   k   s	    "*tH~/?H'2${#8KK",d:2DG8$I"ST\S] ^__[)K+*A;yQFIk2.Ii,00"= #'((9b)**xx,2 +WW]+R-'GGM388<!ggor:778X6( WWV_2GGI.4"! C)  S*+" -(BDHMM)C#((;3xx(3((695&)/R+1rG W%SX&G#'J --+//	2> #ZZ&R%JJ{CHH5jj3::h1jj3ZZ'-2JJy)/R
 	C!S"#" r   __main__z<============================================================u"   조직 상세 파일 생성 시작u
     소스: u    (백업 우선)u
     출력: u   
총 u   개 파일 생성 완료:z  z: ,z bytesu   
완료!)r   r   r+   zdict[str, Any] | None)r/   r*   r+   dict[str, dict[str, Any]])r7   r*   r   r*   r+   r*   )r&   list[dict[str, Any]]r   r*   r+   rr   )r   r   r/   r*   r+   r,   )rI   rc   rJ   rc   rL   rc   rO   rc   rP   r*   r&   rs   r   r*   r+   r*   )NNN)rd   Path | Nonere   rt   rf   rt   r+   z	list[str])__doc__
__future__r   r   pathlibr   typingr   
_WORKSPACE_MEMORY_DIRr]   r^   r_   r   r5   r8   r<   rG   rR   ro   __name__printfileslensortedfpstatst_sizesizer`    r   r   <module>r      s  
 #   '(
8#!>> !M14XX  =0 @#!+99  	
  "  0 !#"MMM M 	M` z	(O	
./	J*++;
<=	J)*
+,	(O)+E	F3u:,7
89Um 4Bx}}&&48==/D86234 
+ r   