
    Si                         d Z ddlZddlZddlmZ ddlZ eej                  j                  dd            Z G d d      Z	 G d d	      Z
 G d
 d      Z G d d      Zy)u   task-1037.1: 디자인 작업 제한 규칙 테스트

team_prompts.py와 DIRECT-WORKFLOW.md에 추가된 디자인 금지 규칙을 검증합니다.
    N)PathWORKSPACE_ROOTz/home/jay/workspacec                       e Zd ZdZej
                  defd       ZdeddfdZdeddfdZ	deddfdZ
deddfd	Zdd
ZddZddZy) TestTeamPromptsDesignRestrictionu2   team_prompts.py 디자인 제한 규칙 테스트.returnc                 8    t         dz  }|j                  d      S )u%   team_prompts.py 파일 내용 로드.prompts/team_prompts.pyutf-8encoding
_WORKSPACE	read_textselfpaths     Z/home/jay/workspace/.worktrees/task-2117-dev1/tests/test_task_1037_1_design_restriction.pyteam_prompts_contentz5TestTeamPromptsDesignRestriction.team_prompts_content   s      55~~w~//    r   Nc                     d|v sJ d       y)uA   _build_direct_prompt에 디자인 금지 규칙이 있어야 함.%   디자인 작업 직접 수행 금지uK   team_prompts.py에 '디자인 작업 직접 수행 금지' 규칙이 없음N r   r   s     r   )test_direct_prompt_has_design_restrictionzJTestTeamPromptsDesignRestriction.test_direct_prompt_has_design_restriction   s     47KK	YX	YKr   c                     d|v sJ d       y)uD   _build_direct_prompt에 디자인팀 호출 명시가 있어야 함.   디자인팀 호출 필요u@   team_prompts.py에 '디자인팀 호출 필요' 문구가 없음Nr   r   s     r   'test_direct_prompt_mentions_design_teamzHTestTeamPromptsDesignRestriction.test_direct_prompt_mentions_design_team   s!    +/CC  	H  FH  	HCr   c                 *    d|v rd|v rd|v sJ d       y)uL   _build_direct_prompt에서 satori/gemini/hybrid 스킬 호출 금지 명시.satorigeminihybridu?   team_prompts.py에 satori/gemini/hybrid 스킬 언급이 없음Nr   r   s     r   !test_direct_prompt_forbids_skillszBTestTeamPromptsDesignRestriction.test_direct_prompt_forbids_skills#   s3     ,,=Q1QV^bvVv	ML	MvVvr   c                     t        j                  d|t         j                        }|sJ d       |j                  d      }d|v sJ d       y)u>   _build_glm_prompt에 디자인 금지 규칙이 있어야 함.z#def _build_glm_prompt.*?(?=def |\Z)u-   _build_glm_prompt 함수를 찾을 수 없음r   r   uM   _build_glm_prompt에 '디자인 작업 직접 수행 금지' 규칙이 없음N)researchDOTALLgroup)r   r   glm_prompt_matchglm_prompt_codes       r   &test_glm_prompt_has_design_restrictionzGTestTeamPromptsDesignRestriction.test_glm_prompt_has_design_restriction)   sY     99%KMaceclclmP!PP*0033F	[Z	[Fr   c                 r    	 ddl m}m} y# t        $ r"}t	        j
                  d|        Y d}~yd}~ww xY w)u8   team_prompts.py가 정상적으로 import 되어야 함.r   )	TEAM_INFObuild_promptu   team_prompts.py import 실패: N)prompts.team_promptsr,   r-   	Exceptionpytestfail)r   r,   r-   es       r   test_import_worksz2TestTeamPromptsDesignRestriction.test_import_works4   s4    	?D 	?KK9!=>>	?s    	616c                 V    ddl m}  |ddddd      }d	|v sJ d
       d|v sJ d       y)uI   build_prompt() 호출 시 디자인 금지 규칙이 포함되어야 함.r   r-   z	dev1-teamztest-123u   테스트 작업normalcodingteam_idtask_id	task_desclevel	task_typer   uR   생성된 프롬프트에 '디자인 작업 직접 수행 금지' 규칙이 없음r   uG   생성된 프롬프트에 '디자인팀 호출 필요' 문구가 없음Nr.   r-   r   r-   prompts      r   'test_build_prompt_generates_design_rulezHTestTeamPromptsDesignRestriction.test_build_prompt_generates_design_rule=   s\    5 ?QYamu
 7&@  	W  CW  	W@+v5  	A  8A  	A5r   c                 @    ddl m}  |ddddd      }d	|v sJ d
       y)uJ   GLM 팀 프롬프트에도 디자인 금지 규칙이 포함되어야 함.r   r5   z	dev8-teamztest-456u   GLM 테스트 작업r6   r7   r8   r   uL   GLM 프롬프트에 '디자인 작업 직접 수행 금지' 규칙이 없음Nr>   r?   s      r   %test_glm_prompt_generates_design_rulezFTestTeamPromptsDesignRestriction.test_glm_prompt_generates_design_ruleI   s?    5 ?U]eqy
 7&@  	Q  CQ  	Q@r   r   N)__name__
__module____qualname____doc__r0   fixturestrr   r   r   r"   r*   r3   rA   rC   r   r   r   r   r      s    <^^0c 0 0
Yc YVZ YHC HTX HMc Md M	[3 	[SW 	[?
A	Qr   r   c                   J    e Zd ZdZej
                  defd       ZdeddfdZy)#TestDirectWorkflowDesignRestrictionu5   DIRECT-WORKFLOW.md 디자인 제한 섹션 테스트.r   c                 8    t         dz  }|j                  d      S )u(   DIRECT-WORKFLOW.md 파일 내용 로드.prompts/DIRECT-WORKFLOW.mdr
   r   r   r   s     r   workflow_contentz4TestDirectWorkflowDesignRestriction.workflow_contentX   s      88~~w~//r   rO   Nc                     d|v sJ d       y)u)   디자인 제한 섹션이 있어야 함.u   디자인 작업 제한u@   DIRECT-WORKFLOW.md에 '디자인 작업 제한' 섹션이 없음Nr   )r   rO   s     r   #test_has_design_restriction_sectionzGTestDirectWorkflowDesignRestriction.test_has_design_restriction_section^   s     (,<<  	A  ?A  	A<r   )	rE   rF   rG   rH   r0   rI   rJ   rO   rQ   r   r   r   rL   rL   U   s8    ?^^0# 0 0
AC AD Ar   rL   c                   j    e Zd ZdZej
                  defd       ZdeddfdZdeddfdZ	deddfdZ
y)	TestDesignTeamModelu)   design-team.json 모델 설정 테스트.r   c                     ddl }t        dz  }t        |d      5 }|j                  |      cddd       S # 1 sw Y   yxY w)u   design-team.json 파일 로드.r   N#memory/org-details/design-team.jsonr
   r   )jsonr   openload)r   rV   r   fs       r   design_team_dataz$TestDesignTeamModel.design_team_dataf   s>     	AA$) 	 Q99Q<	  	  	 s   6?rZ   Nc                     |j                  di       j                  di       }|j                  dd      }|dk(  s
J d|        y)u%   비너스 모델이 gemini여야 함.members_detailvenus-delegatemodel r    u(   비너스 모델이 'gemini'이 아님: Nget)r   rZ   venusr^   s       r   test_venus_model_is_geminiz.TestDesignTeamModel.test_venus_model_is_geminio   sO     $$%5r:>>?OQST		'2& T$LUG"TT r   c                     |j                  di       j                  di       }|j                  dd      }|dk(  s
J d|        y)u(   비너스 엔진이 google이어야 함.r\   r]   enginer_   googleu(   비너스 엔진이 'google'이 아님: Nr`   )r   rZ   rb   re   s       r   test_venus_engine_is_googlez/TestDesignTeamModel.test_venus_engine_is_googleu   sO     $$%5r:>>?OQST8R(!V%MfX#VV!r   c                 8    g d}|D ]  }||v rJ d| d        y)u,   design-team.json 구조가 유효해야 함.)r9   	team_nameleadr\   u    design-team.json에 필수 키 'u   '가 없음Nr   )r   rZ   required_keyskeys       r    test_design_team_structure_validz4TestDesignTeamModel.test_design_team_structure_valid{   s7    J  	`C**_.NseS^,__*	`r   )rE   rF   rG   rH   r0   rI   dictrZ   rc   rg   rm   r   r   r   rS   rS   c   sd    3^^ $    U4 UD UWD WT W` `$ `r   rS   c                       e Zd ZdZddZy)TestIntegrationu   통합 테스트.Nc                 ~   t        t        dz        t        t        dz        t        t        dz        g}|D ]  }t        |      }|j                         s
J d|        |j	                  d      r	 |j	                  d      rddlm} R|j	                  d      sdddl
}	 t        |d      5 }|j                  |       ddd        y# t        $ r%}t        j                  d	| d
|        Y d}~d}~ww xY w# 1 sw Y   =xY w# |j                  $ r%}t        j                  d| d
|        Y d}~d}~ww xY w)u@   수정된 파일들이 구문 에러 없이 로드되어야 함.r	   rN   rU   u   파일이 존재하지 않음: z.pyzteam_prompts.pyr   r5   u   Python 파일 로드 실패 (z): Nz.jsonr
   r   u   JSON 파싱 실패 ()rJ   r   r   existsendswithr.   r-   r/   r0   r1   rV   rW   rX   JSONDecodeError)r   files_to_check	file_pathr   r-   r2   rV   rY   s           r   test_no_syntax_errorsz%TestIntegration.test_no_syntax_errors   s@    
667
99:
BBC
 ( 	JI	?D;;=O$CI;"OO= !!%(S ))*;<E
 ##G,JdW5 %		!%#	J ! SKK"?	{#aS QRRS% %++ JKK"6ykQC HIIJsH   2C!D.C< D	C9C44C9<D	DD<D77D<rD   )rE   rF   rG   rH   rw   r   r   r   rp   rp      s    Jr   rp   )rH   osr$   pathlibr   r0   environra   r   r   rL   rS   rp   r   r   r   <module>r{      sf   
 
 	  "**..!13HIJ
CQ CQLA A` `>J Jr   