
    i                     l    d Z ddlZddlmZ ddlmZ ddlmZmZ  G d d      Zd Z	e
d	k(  r e	        yy)
u   
전문가 토론 코디네이터 (메인 관리자 전용)

메인 관리자가 sessions_spawn 툴을 사용하여 각 전문가를 실제 별도 세션으로 호출
    N)datetime)Path)DictListc                   h    e Zd ZdZd Zdededeeef   fdZdee   defdZ	dededee   defd	Z
y
)ExpertDebateCoordinatoruA   전문가 토론 코디네이터 (메인 관리자 호출 방식)c           	          t        d      | _        | j                  dz  dz  | _        | j                  j                  d       dddd	d
ddd	dddd	dddd	dddd	dddd	d| _        y )Nz/home/jay/workspacememorydebatesT)exist_oku   프론트엔드 아키텍트u7   React, Vue, Next.js, 성능 최적화, 사용자 경험u-   UI/UX, 성능, 접근성, 반응형 디자인)name	expertisefocusu   백엔드 아키텍트u8   FastAPI, Django, Node.js, 데이터베이스, API 설계u.   확장성, 보안, 성능, 데이터 무결성u   UI/UX 디자이너u>   사용자 경험, 인터랙션 디자인, 접근성, 브랜딩u0   사용자 여정, 직관성, 브랜드 일관성u   법률 자문uE   개인정보보호법, 전자상거래법, 저작권법, 이용약관u2   법적 리스크, 컴플라이언스, 이용약관u   DevOps 엔지니어u,   CI/CD, Docker, AWS/GCP, 모니터링, 보안u3   배포 자동화, 인프라 확장성, 모니터링u   보안 전문가u1   OWASP, 인증/인가, 암호화, 취약점 분석u4   보안 아키텍처, 데이터 보호, 침해 대응)frontendbackenduiuxlegaldevopssecurity)r   workspace_pathdebate_results_dirmkdirexpert_personas)selfs    Q/home/jay/workspace/.worktrees/task-2116-dev1/memory/expert-debate-coordinator.py__init__z ExpertDebateCoordinator.__init__   s    "#89"&"5"5"@9"L%%t%4
 7VH 1WI -]K (dM .KN +PO5 
    specquestionreturnc                     i }| j                   j                         D ];  \  }}d|d    d|d    d|d    dt        j                  |dd	
       d| d}|||<   = |S )u_   각 전문가별 task 설명 생성 (메인 관리자가 sessions_spawn으로 호출할 내용)u   
당신은 r   u   입니다.

전문 분야: r   u   
중점 사항: r   u   

프로젝트 스펙:
F   ensure_asciiindentu   

토론 주제: u  

당신의 전문 분야 관점에서 다음을 제시해주세요:

## 주요 고려사항
- 구체적인 기술적 고려사항 3-5개
- 각 항목별 이유와 근거

## 잠재적 문제점
- 예상되는 문제점 2-3개
- 각 문제점의 심각도와 해결 방안

## 권장 사항
- 구체적인 권장 사항 2-3개
- 우선순위와 이유

## 다른 전문가와 의견 충돌 가능성
- 프론트엔드/백엔드/디자인/법률/DevOps/보안 중 의견이 다를 수 있는 부분
- 구체적인 충돌 포인트와 타협 방안

**중요:** 일반적인 답변이 아닌, 이 프로젝트에 구체적인 답변을 제시해주세요.
)r   itemsjsondumps)r   r   r   tasksexpert_typepersonatask_descriptions          r   generate_expert_tasksz-ExpertDebateCoordinator.generate_expert_tasks8   s     $($8$8$>$>$@ !	2 K$6?
 $% & ! " DuQ/ 0 1z  @ "2E+C!	2F r   opinionsc           	         g }g }g }|D ]+  }d|j                  dd      v s|j                  |d          - t        |      D ]  \  }}t        ||dz   d |dz         D ]c  \  }}	d|j                  dd      v sd|	j                  dd      v s/|j                  |j                  dd      |	j                  dd      d	d
       e  ||t        |      dS )uA   합의점 도출 (메인 관리자가 수집한 의견을 전달)u   권장 사항opinion    Nu   의견 충돌expert_nameUnknownT)expert1expert2potential_conflict)consensus_points	conflictstotal_experts)getappend	enumeratelen)
r   r.   r8   r9   all_recommendationsr0   iopinion1jopinion2s
             r   find_consensusz&ExpertDebateCoordinator.find_consensusb   s    	 ! 	?G'++i"<<#**79+=>	?
 %X. 		KAx(!a%'):AEB 8"hll9b&AA_X`XdXdenprXsEs$$'/||M9'M'/||M9'M26		 %59_bck_lmmr   c                    dt        j                         j                  d       }| j                  |      }|||||t        j                         j	                         d}| j
                  | dz  }t        |dd      5 }t        j                  ||dd	
       ddd       t        |      S # 1 sw Y   t        |      S xY w)u   토론 결과 저장zdebate-z%Y%m%d-%H%M%S)	debate_idr   r   r.   	consensus	timestampz.jsonwzutf-8)encodingFr"   r#   N)
r   nowstrftimerD   	isoformatr   openr'   dumpstr)	r   r   r   r.   rF   rG   resultresult_filefs	            r   save_debate_resultz*ExpertDebateCoordinator.save_debate_result|   s     hlln55oFGH	''1	 #  "!113
 --9+U0CC+sW5 	?IIfaeA>	? ;	? ;s   B..CN)__name__
__module____qualname____doc__r   r   rP   r-   r   rD   rT    r   r   r   r      sn    K%
N($ (# ($sCx. (TntDz nd n4 t  s  d4j  UX  r   r   c                     dd l } t               }t        | j                        dkD  r| j                  d   dk(  rndg dg ddd}d	}|j	                  ||      }t        d
       |j                         D ]%  \  }}t        d| d       t        |d d dz          ' t        d       y t        d       t        d       t        d       t        d       t        d       t        d       t        d       y )Nr   r2   demou   쇼핑몰 플랫폼)u   상품 검색u   장바구니u   결제u   리뷰)ReactFastAPI
PostgreSQLu   일반 소비자)projectfeatures
tech_stacktargetuB   이 쇼핑몰 플랫폼의 최적 아키텍처는 무엇인가요?u,   📝 전문가별 Task 설명 생성 완료:
:d   z...uQ   
✅ 메인 관리자가 각 task를 sessions_spawn으로 호출하면 됩니다.u
   사용법:z2  python3 memory/expert-debate-coordinator.py demou   
메인 관리자 사용법:z)  coordinator = ExpertDebateCoordinator()z;  tasks = coordinator.generate_expert_tasks(spec, question)u+     # 각 task를 sessions_spawn으로 호출u4     # 결과를 coordinator.find_consensus()에 전달)sysr   r>   argvr-   printr&   )rf   coordinator	demo_specr   r)   r*   tasks          r   mainrl      s    )+K
388}qSXXa[F2 -M<(	
	 X11)XF<=!& 	&KB{m1%&$t*u$%	& 	bc 	lBC-.9:KL;<DEr   __main__)rX   r'   r   pathlibr   typingr   r   r   rl   rU   rY   r   r   <module>rp      s@       A  A H FF zF r   