
    *i[                        d Z ddlZddlZddlZddlZddlmZ ddlmZ  ee      j                  j                  Z
e
dz  dz  Ze
dz  Zdefd	Zdeddfd
ZdedefdZdededefdZddedededededefdZddZd Zedk(  r e        yy)u  
add-team.py - 새 팀 추가 CLI 스크립트

Usage:
    python3 scripts/add-team.py --name "팀명" --type "수직조직|횡단조직" --lead "리더ID" [--status "active|planned"]
    python3 scripts/add-team.py --list
    python3 scripts/add-team.py --help

Features:
    - config/teams.json에서 팀 정보 읽기
    - 새 팀 추가 시 teams.json 자동 업데이트
    - 팀 디렉터리 자동 생성 (teams/<team_id>/)
    - 기본 설정 파일 생성 (README.md, .gitkeep)
    N)datetime)Pathconfigz
teams.jsonteamsreturnc                      t         j                         sdi i dS t        t         dd      5 } t        j                  |       cddd       S # 1 sw Y   yxY w)u   teams.json 로드z1.0)versionr   metadatarutf-8encodingN)CONFIG_FILEexistsopenjsonload)fs    '/home/jay/workspace/scripts/add-team.pyload_configr      sI     22>>	k3	1 Qyy|  s   AAc           
      l   t        j                         j                  d      | d<   t        | j	                  di             t        d | j	                  di       j                         D              t        d | j	                  di       j                         D              t        d | j	                  di       j                         D              d| d<   t        j                  j                  d	d	
       t        t        dd      5 }t        j                  | |dd       ddd       y# 1 sw Y   yxY w)u   teams.json 저장%Y-%m-%d %H:%M:%Supdatedr   c              3   J   K   | ]  }|j                  d       dk(  sd  yw)statusactive   Nget.0ts     r   	<genexpr>zsave_config.<locals>.<genexpr>.   s!     g!155QY?^fKfAg   ##c              3   J   K   | ]  }|j                  d       dk(  sd  yw)r   plannedr   Nr   r    s     r   r#   zsave_config.<locals>.<genexpr>/   s!     i1AEERZO_hLhQir$   c              3   R   K   | ]  }t        |j                  d g              ! yw)membersN)lenr   r    s     r   r#   zsave_config.<locals>.<genexpr>0   s      a1Sy"!56as   %')total_teamsactive_teamsplanned_teamstotal_membersr
   Tparentsexist_okwr   r   F   )ensure_asciiindentN)r   nowstrftimer)   r   sumvaluesr   parentmkdirr   r   dump)r   r   s     r   save_configr<   '   s     //0CDF9 6::gr23gvzz'2'>'E'E'Gggi

7B(?(F(F(Hiia

7TV@W@^@^@`aa	F: TD9	k3	1 ;Q		&!%:; ; ;s   D**D3namec           
          ddddddddd	d
	}| j                         j                  dd      }|j                         D ]  \  }}|j                  ||      } dj                  d |D              }|S )u!   팀명으로부터 team_id 생성devteamcenterofficestrategy	marketing	insurancedesignred)	u   개발u   팀u   센터u   실u   전략u	   마케팅u   보험u	   디자인u   레드 - c              3   L   K   | ]  }|j                         s|d k(  s|  yw)rI   N)isalnum)r!   cs     r   r#   z#generate_team_id.<locals>.<genexpr>L   s     B1!))+cQBs   $$)lowerreplaceitemsjoin)r=   korean_to_englishresultkrens        r   generate_team_idrV   8   s      
 ZZ\!!#s+F#))+ (BB'( WWBBBFM    team_id	team_namec                 ,   t         | z  }|j                  dd       |dz  }|j                         sd| d| d}|j                  |d       |d	z  j                  d
       |dz  j                  d
       |dz  j                  d
       |d	z  dz  j	                          |dz  dz  j	                          |dz  }|j                  d
       t        d      }|dz  }|j                         s8|j                         s(t        j                  t        |      t        |             t        dz  dz  dz  }|dz  }	|	j                         sH|	j                         s8|j                         r(t        j                  t        |      t        |	             |S )u   팀 디렉터리 생성Tr.   z	README.mdz# u!   

## 개요

이 디렉터리는 uQ  의 작업 공간입니다.

## 구조

- `src/` - 소스 코드
- `tests/` - 테스트 코드
- `docs/` - 문서

## 팀원

(팀원 목록을 여기에 추가하세요)

## 작업 가이드

1. 모든 코드는 테스트와 함께 제출하세요
2. 커밋 메시지는 명확하게 작성하세요
3. PR은 리뷰 후 머지하세요
r   r   src)r0   testsdocsz.gitkeepqcz../../shared/verifiers	verifiersr   sharedzqc_verify.py)	TEAMS_DIRr:   r   
write_texttouchr   
is_symlinkossymlinkstrWORKSPACE_ROOT)
rX   rY   team_dirreadme_pathreadme_contentqc_dirshared_verifiersverifiers_linkshared_qc_verifyqc_verify_links
             r   create_team_directoryrq   P   s   7"HNN4$N/ [(K	{ + K  	, 	~@ d+-t,
"))+*$++- _F
LL$L45k)N%%'>+@+@+B


3'(#n*=>%/(:^Kn,N%%'>+@+@+BHXH_H_Ha


3'(#n*=>OrW   	team_typeleadr   r(   c                 d   t               }t        |       }||j                  di       v r#t        d|        t	        j
                  d       | ||||xs g t        j                         j                  d      d}d|vri |d<   ||d   |<   t        |       t        ||       }||t        |      dS )u   새 팀 추가r   u1   ❌ 오류: 이미 존재하는 팀 ID입니다: r   r   )r=   typer   rs   r(   
created_at)rX   	team_info	directory)r   rV   r   printsysexitr   r5   r6   r<   rq   rg   )	r=   rr   rs   r   r(   r   rX   rw   ri   s	            r   add_teamr|      s    ]F t$G &**Wb))A'KL =blln--.ABI fw(F7OG  %Wd3HYS]SSrW   c            	          t               } | j                  di       }|st        d       yt        d       t        d       |j                         D ]  \  }}|j                  d      dk(  rdnd	}|j                  d
d      }t	        |j                  dg             }t        | d|        t        d|j                  dd              t        d|j                  dd              t        d|        t        d| d       t                 | j                  di       }t        d       t        d|j                  dd       d       t        d|j                  dd       d|j                  dd       d       y)u   모든 팀 목록 출력r   u   등록된 팀이 없습니다.Nu   
📋 팀 목록z<============================================================r   r   u   🟢u   🟡rs   rI   r(   rH   u      이름: r=         유형: ru         리더: u      팀원: u   명r
   u   총 r*   r   u   개 팀u   활성: r+   u   개 | 계획: r,   u   개)r   r   ry   rP   r)   )r   r   rX   infostatus_emojirs   members_countr
   s           r   
list_teamsr      sc   ]FJJw#E./	
	(O 
!%(!3x!?vVxx$DHHY34ay)*DHHVS1234DHHVS1234D6"#M?#./
 zz*b)H	(O	DmQ/0
89	HX\\.!45^HLLQ`bcDdCeeh
ijrW   c                     t        j                  dt         j                  d      } | j                  ddd       | j                  dd	d
dgd       | j                  ddd d       | j                  ddddgdd       | j                  dddg d       | j                  ddd        | j	                         }|j
                  rt                y |j                  r|j                  s0| j                          t        d!       t        j                  d"       t        |j                  |j                  |j                  |j                  |j                   #      }t        d$       t        d%|d&           t        d'|d(   d)           t        d*|d(   d+           t        d,|d(   d-           t        d.|d(   d/   xs d0        t        d1|d2           y )3Nu   새 팀 추가 CLI 스크립트u   
예시:
  python3 scripts/add-team.py --name "AI팀" --type "수직조직" --lead "gpt" --status "active"
  python3 scripts/add-team.py --list
        )descriptionformatter_classepilogz--namez-nu
   팀 이름)helpz--typez-tu   수직조직u   횡단조직u
   팀 유형)choicesr   z--leadz-lu   팀 리더 ID)defaultr   z--statusz-sr   r&   u
   팀 상태)r   r   r   z	--membersz-m+u   팀원 ID 목록)nargsr   r   z--list
store_trueu   팀 목록 출력)actionr   u0   
❌ 오류: --name과 --type은 필수입니다r   )r=   rr   rs   r   r(   u   ✅ 팀 추가 완료!u      팀 ID: rX   u      팀명: rw   r=   r~   ru   u      상태: r   r   rs   rI   u      디렉터리: rx   )argparseArgumentParserRawDescriptionHelpFormatteradd_argument
parse_argslistr   r=   ru   
print_helpry   rz   r{   r|   rs   r   r(   )parserargsrS   s      r   mainr      s   $$5 <<F $\:
$0PWcd
$?K

D8Y2GQZamn
TbGYZ
<OPDyy99DIIAB 499				RVR]R]gkgsgstF	
"#	Ky)*
+,	K{+F34
56	K{+F34
56	K{+H56
78	K{+F3:s;
<=	f[12
34rW   __main__)Nr&   N)r   N)__doc__r   r   re   rz   r   pathlibr   __file__r9   rh   r   ra   dictr   r<   rg   rV   rq   r   r|   r   r   __name__ rW   r   <module>r      s      	 
   h&&--x',6W$	T ; ; ;"3 3 063 63 64 6r!T3 !T3 !Tc !T# !T\` !Tlp !THk>&5R zF rW   