
    Si                        d Z ddlZddlZddlZddlmZmZ ej                  j                  dej                  j                  ej                  j                  e
      d             ddlZd Zd Zd Zd Zd	 Zd
 Zd Zd Zy)u/   P2-5: 모델 매핑 테이블 단위 테스트.    N)datetime	timedeltaz..c                      ddl m}  h d}| j                         D ch c]  }|j                  d      r| }}||k(  sJ yc c}w )u5   MODEL_MAP에 필수 역할이 존재하는지 확인.r   	MODEL_MAP>      팀장	   백엔드	   테스터   보안리뷰   프론트엔드UX/UIQCgit_N)prompts.team_promptsr   keys
startswith)r   required_roleskactual_roless       E/home/jay/workspace/.worktrees/task-2117-dev1/tests/test_model_map.pytest_model_map_keysr      sC    .rN(~~/I!q||C7HAILI\))) Js
   AAc                  F    ddl m}  d| v sJ t        | d   t              sJ y)u:   MODEL_MAP에 _updated 메타키가 존재하는지 확인.r   r   _updatedN)r   r   
isinstancestrr   s    r   test_model_map_has_updatedr      s(    ."""i
+S111    c                      ddl m}  | j                         D ]%  \  }}|j                  d      rd|v rJ | d        y)u>   각 역할에 default 모델이 정의되어 있는지 확인.r   r   r   defaultu   에 default 모델 없음N)r   r   itemsr   )r   roleconfigs      r   test_model_map_default_modelsr$      sK    .!) Gf??3F"Ftf,E$FF"Gr   c                      ddl m} m}  |       }| D ]2  }|j                  d      r||vrJ d| d       ||v r)J d| d        y)	uG   _build_model_guide() 출력에 모든 역할이 포함되는지 확인.r   r   _build_model_guider   u
   메타키 u   이 출력에 노출됨u   역할 u   이 출력에 없음N)r   r   r'   r   )r   r'   guider"   s       r   )test_build_model_guide_contains_all_rolesr)   (   sb    B E G??3u$P
4&8O&PP$5=FGD61E"FF=	Gr   c                  *    ddl m}   |        }d|vsJ y)uM   메타키(_updated 등)가 출력 텍스트에 노출되지 않는지 확인.r   )r'   r   N)r   r'   )r'   r(   s     r   "test_build_model_guide_no_metakeysr+   4   s    7 EU"""r   c                 D   ddl m}m} |d   }t        j                         t        d      z
  j                  d      }||d<   | j                  t        j                        5   |        ddd       ||d<   t        d | j                  D              sJ y# 1 sw Y   -xY w)	u9   staleness 7일 초과 시 경고 메시지 발생 확인.r   r&   r      )days%Y-%m-%dNc              3   X   K   | ]"  }d |j                   v xr d|j                   v  $ yw)r      경과N)message).0records     r   	<genexpr>z5test_staleness_warning_over_7_days.<locals>.<genexpr>I   s+     iPV{fnn,KV^^1KKis   (*)r   r   r'   r   nowr   strftimeat_levelloggingWARNINGanyrecords)caplogr   r'   originalold_dates        r   "test_staleness_warning_over_7_daysr@   <   s    B$H!33==jIH$Ij		)  %IjiZ`ZhZhiiii s   "BBc                    ddl m}m} |d   }t        j                         j                  d      |d<   | j                  t        j                        5   |        ddd       ||d<   | j                  D cg c]"  }d|j                  v sd|j                  v s!|$ }}t        |      dk(  sJ y# 1 sw Y   VxY wc c}w )u/   staleness 7일 이하 시 경고 없음 확인.r   r&   r   r/   Nr   r1   )r   r   r'   r   r6   r7   r8   r9   r:   r<   r2   len)r=   r   r'   r>   rmodel_map_warningss         r   'test_staleness_no_warning_within_7_daysrE   L   s    B$H$LLN33J?Ij		)  %Ij >>[AII%=(aiiBW  !"a''' 
s   B06B<
B<B<0B9c                  6    ddl m}   | d      }d|v sd|v sJ yy)uI   feature_flag OFF 시 기존 _build_cowork_section() 동작 유지 확인.r   )_build_cowork_sectionz	dev1-teamu   모델 선택 가이드u   모델 가이드N)r   rG   )rG   results     r   $test_feature_flag_off_keeps_existingrI   ^   s+    :";/F$.2D2NNN2N.r   )__doc__r9   ossysr   r   pathinsertjoindirname__file__pytestr   r   r$   r)   r+   r@   rE   rI    r   r   <module>rT      sq    5  	 
 ( 277<< 94@ A *2G	G#j ($Or   