
    i              	       6   d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	m
Z
mZ 	 ddlmZmZmZ  G d de      Zd	 Zed
k(  r e        yy# e$ rI ej"                  j%                  d e ee      j*                  j*                               ddlmZmZmZ Y iw xY w)uo   
Base Reviewer - 검토자 추상 인터페이스

모든 검토자가 상속받아야 하는 기본 클래스
    N)ABCabstractmethod)Path)AnyDictList)	log_errorlog_executionsetup_loggingc                   `    e Zd ZdZd Zededeeef   fd       Z	de
e   defdZdedefd	Zy
)ReviewerInterfaceu%   검토자 인터페이스 (추상화)c                 P    t        d      | _        t        | j                  d       y)u   초기화 및 로거 설정zred_team.base_reviewerzReviewerInterface initializedN)r   loggerr
   )selfs    N/home/jay/workspace/.worktrees/task-2116-dev1/memory/red_team/base_reviewer.py__init__zReviewerInterface.__init__   s    #$<=dkk#BC    docreturnc                      y)u  
        문서 검토 (추상 메서드)

        Args:
            doc: 검토할 문서 (텍스트 또는 파일 경로)

        Returns:
            {
                "risk_level": str,  # "low"|"medium"|"high"|"critical"
                "issues": List[Dict],  # 문제점 목록
                "recommendation": str,  # 권장사항
                "details": Dict  # 상세 정보 (선택)
            }
        N )r   r   s     r   reviewzReviewerInterface.review   s      	r   issuesc                     |syddddd}d}|D ]<  }|j                  dd      }|j                  |d      |j                  |d      kD  s;|}> t        |      d	kD  r	|d
k(  rd}|S t        |      dkD  r|dk(  rd}|S )u   
        리스크 레벨 평가 (공통 로직)

        Args:
            issues: 문제점 목록

        Returns:
            "low"|"medium"|"high"|"critical"
        low            r   mediumhighcriticalseverityr      r!   r"   
   r#   )getlen)r   r   severity_scoresmax_severityissuer$   s         r   _assess_riskzReviewerInterface._assess_risk0   s      #$q!K 	(EyyU3H""8Q//2E2ElTU2VV'	( v;?|x7!L  [2,&"8%Lr   
risk_levelc                 4    ddddd}|j                  |d      S )u   
        리스크 레벨별 권장사항 (공통 로직)

        Args:
            risk_level: "low"|"medium"|"high"|"critical"

        Returns:
            권장사항 텍스트
        u$   낮은 위험 - 현재 수준 유지u   중간 위험 - 수정 권장u$   높은 위험 - 즉시 수정 필요u2   심각한 위험 - 즉시 중단 및 수정 필요r    u   알 수 없음)r'   )r   r-   recommendationss      r   _get_recommendationz%ReviewerInterface._get_recommendationN   s-     :5:L	
 "":/?@@r   N)__name__
__module____qualname____doc__r   r   strr   r   r   r   r,   r0   r   r   r   r   r      sb    /D
 # $sCx.  "4: # <Ac Ac Ar   r   c                      t        t        j                        dkD  r=t        j                  d   dk(  r't        t	        j
                  ddg ddd             yt        t	        j
                  d	d
d             y)u   CLI 테스트 인터페이스r   testloadedr   )r   r,   r0   )status	interfacemethodsr   )indentz8This is an abstract class. Use concrete implementations.zpython3 base_reviewer.py test)errorusageN)r(   sysargvprintjsondumpsr   r   r   mainrD   a   si    
388}qSXXa[F2JJ&!4P
 		
 	JJW<	
r   __main__)r4   rB   r?   abcr   r   pathlibr   typingr   r   r   logging_configr	   r
   r   ImportErrorpathinsertr5   __file__parentr   rD   r1   r   r   r   <module>rO      s     
 #  " "GFFHA HAV
0 zF Q  GHHOOAs4>007789FFGs   
A
 
ABB