
    T/ip              
          d Z ddlZddlZddlmZ  ed      ZdefdZd Zd Z	d	 Z
d
 Zd Zedk(  rg Z ed        ed         ed       defde	fde
fdefdefgZdZdZeD ]X  \  ZZ ede d        e       ZeD ]*  \  ZZZerdndZeredz  Znedz  Z ede de de        , ej5                  e       Z  edd         ede de deez    d        ed         ej6                  edk(  rdnd       yy) u2   네이버 블로그 규칙 자동 주입 테스트    N)Pathz/home/jay/workspace	task_descc                 D   | j                         }d}d| v sd|v rd}n@t        j                  d| t        j                        rd}nt        j                  d|       rd}|syt        dz  d	z  }|j                         sy	 |j                  d
      }|S # t        $ r Y yw xY w)uI   dispatch.py의 _inject_platform_rules 로직 복사 (독립 테스트용)F   네이버 블로그blog-publish-naverT   naver.*블로그   네이버.*발행Nconfignaver-blog-rules.mdutf-8encoding)lowerresearch
IGNORECASE	WORKSPACEexists	read_textOSError)r   
task_lowernaver_blog_detected
rules_pathrules_contents        =/home/jay/workspace/teams/dev3/tests/test_naver_blog_rules.py_inject_platform_rulesr      s    "J	)-AZ-O"	&	2==	A"	'	3"X%(==J",,g,> s   ?B 	BBc                      g } g d}|D ](  \  }}t        |      }|du}| j                  ||df       * g d}|D ](  \  }}t        |      }|du }| j                  ||df       * | S )u   키워드 감지 테스트))u/   네이버 블로그에 보험 설명 글 작성r   )u#   blog-publish-naver 스킬로 발행r   )u   Blog-Publish-Naver 대소문자u!   Blog-Publish-Naver (대소문자))u*   naver 플랫폼에 블로그 글 올리기r   )u   Naver에서 블로그 포스팅u   Naver.*블로그 (대문자))u   네이버에 글 발행하기r	   Nu   감지O))u$   티스토리 블로그에 글 작성u   티스토리 블로그)u#   워드프레스 블로그 포스팅u   워드프레스)u   API 서버 개발u   무관 키워드)u!   네이버 카페에 글 올리기u#   네이버 카페 (블로그 아님))u'   블로그 글 작성 (네이버 아님)u   블로그만 단독u   감지X)r   append)resultspositive_casesdesclabelresultpassednegative_casess          r   test_keyword_detectionr&   !   s    GN & 3e'-t#vy123N & 3e'-4vy123
 N    c            	      D   g } t         dz  dz  }| j                  d|j                         df       |j                         rY|j                  d      }dd|v fd	d
|v fdd|v fdd|v fdd|v fdd|v fg}| j	                  |D cg c]
  \  }}||df c}}       | S c c}}w )u   규칙 파일 내용 검증r
   r   u   규칙 파일 존재u   파일r   r   u   이모지 금지 규칙   이모지 절대 금지u   빈줄 삽입 규칙u   빈줄 삽입 필수u   SE 에디터 인용구quotation_lineu   HTML 사용 금지u   SE 에디터에서 깨짐u   잔여수수료 금지u   잔여수수료u   여러분 호칭 금지u	   여러분u   내용)r   r   r   r   extend)r   r   contentchecksr"   r$   s         r   test_rules_contentr.   D   s    GX%(==J NN*J,=,=,?JK&&&8 '(AW(LM#%;w%FG%'77'BC!#>'#IJ%'8G'CD&w(>?
 	vNmeV1NON Os   B
c                      g } d}t        d      }|rY|d| z   }| j                  d|j                  d      df       | j                  dd|v df       | j                  d	d
|v df       | S | j                  d       | S )u(   프롬프트에 주입 시 형식 검증u   기존 프롬프트 내용...u   네이버 블로그 글 작성z

u   기존 프롬프트 보존u   기존 프롬프트   주입u   규칙 내용 포함r)   u   빈줄로 구분z

##)u   규칙 주입 실패Fr0   )r   r   
startswith)r   fake_promptrulescombineds       r   test_injection_into_promptr5   \   s    G1K"#CDE4w/4h6I6IJ_6`bjkl.0IX0UW_`a*H,@(KL N 	@ANr'   c                  n   g } t         dz  }|j                  d      }| j                  dd|v df       | j                  dd|v df       | j                  d	d
|v df       ddl}	 |j	                  |       | j                  d       | S # t
        $ r"}| j                  d| ddf       Y d}~| S d}~ww xY w)u+   dispatch.py 문법 및 함수 존재 검증zdispatch.pyr   r   u$   _inject_platform_rules 함수 존재zdef _inject_platform_rules   통합u   dispatch()에서 호출z2platform_rules = _inject_platform_rules(task_desc)u   prompt += 주입z!prompt += f"\n\n{platform_rules}"r   N)u   Python 문법 유효Tr7   u   Python 문법 에러: F)r   r   r   astparseSyntaxError)r   dispatch_pathr,   r8   es        r   test_dispatch_integrationr=   p   s    G-M%%w%7G NN:<X\c<cemno NN-/cgn/npxyz NN&(MQX(XZbcd H		'?@ N  H04eXFGGNHs   %"B	 		B4B//B4c            	         ddl } g }t        dz  dz  }t        |      5 }| j                  |      }ddd       |j	                  ddv df       d|v rz|d   }|j	                  dd	|v df       d	|v r[|d	   }|j	                  d
|j                  d      dk(  df       |j	                  dt        |j                  dg             dkD  df       |S # 1 sw Y   xY w)u.   constants.json에 platform_rules 등록 확인r   Nr
   constants.jsonu   platform_rules 키 존재platform_rulesu   설정u   naver_blog 항목
naver_blogu   rules_file 경로
rules_filezconfig/naver-blog-rules.mdu   keywords 존재keywords)jsonr   openloadr   getlen)rD   r   pathfdataprnbs          r   test_constants_jsonrN      s    Gx"22D	d qyy| NN/1AT1I8TU4"#+\R-?JK2L!BNN/1EIe1egopqNN-s266*b3I/JQ/NPXYZN s   CC__main__z<============================================================u   키워드 감지u   규칙 파일 내용u   프롬프트 주입u   dispatch.py 통합r?   z
--- z ---PASSFAIL   z  [z] [z] 
u   결과: z PASS / u    FAIL (총 u   건))__doc__r   syspathlibr   r   strr   r&   r.   r5   r=   rN   __name__all_resultsprinttests
total_pass
total_failsectiontest_fnr   r"   r$   categorystatusr+   exit r'   r   <module>rd      s   8 	 
 &'	c 2!F0(4* zK	(O	
>?	(O 
34	!34	 :;	89	./E JJ! 
$wit$%)'. 	8#E68%V6Fa
a
Cxs8*Bug67	8 	7#
$ 
Bxj/	HZLK
Z@W?XX\
]^	XJCHH*/Qq)E r'   