
    Si3	                    R    d Z ddlmZ ddlZddlmZ  G d de      Z G d d      Zy)	uX  M-24 Fake Dispatch 클라이언트.

외부 팀 위임 시스템 없이 위임 동작을 시뮬레이션한다.
실패 모드 설정으로 에러 처리 테스트도 가능하다.

Usage:
    fd = FakeDispatch()
    result = fd.dispatch("dev-team", "build feature X")
    assert result["status"] == "ok"
    assert result["team"] == "dev-team"
    )annotationsN)Anyc                      e Zd ZdZy)DispatchErroru"   FakeDispatch 실패 모드 예외.N)__name__
__module____qualname____doc__     J/home/jay/workspace/.worktrees/task-2117-dev1/tests/fakes/fake_dispatch.pyr   r      s    ,r   r   c                  0    e Zd ZdZddZddZd	dZddZy)
FakeDispatchuB   팀 위임을 시뮬레이션하는 Fake Dispatch 클라이언트.c                J    d| _         d| _        d| _        g | _        d| _        y)u
   초기화.r   NFdispatch_count	last_team	last_task
dispatched_should_failselfs    r   __init__zFakeDispatch.__init__   s'    #$%)%)02"'r   c                   | j                   rt        d|d|      t        t        j                               }d|||d|}| xj
                  dz  c_        || _        || _        | j                  j                  |       |S )u  팀에 작업을 위임하는 동작을 시뮬레이션한다.

        Args:
            team: 위임 대상 팀 이름.
            task: 작업 설명.
            **kwargs: 추가 파라미터 (기록에 포함됨).

        Returns:
            {"status": "ok", "task_id": str, "team": str} 형태의 결과.

        Raises:
            DispatchError: 실패 모드가 활성화된 경우.
        zDispatch failed for team=z, task=ok)statustask_idteamtask   )
r   r   struuiduuid4r   r   r   r   append)r   r   r   kwargsr   records         r   dispatchzFakeDispatch.dispatch"   s     ";D874( STTdjjl#	"

 "
 	q v&r   c                    || _         y)u   실패 모드를 설정한다.

        Args:
            should_fail: True이면 dispatch() 호출 시 예외 발생.
        N)r   )r   should_fails     r   set_failurezFakeDispatch.set_failureA   s     (r   c                J    d| _         d| _        d| _        g | _        d| _        y)u?   모든 상태를 초기화하고 실패 모드를 해제한다.r   NFr   r   s    r   resetzFakeDispatch.resetI   s'    !r   N)returnNone)r   r!   r   r!   r%   r   r-   zdict[str, Any])r)   boolr-   r.   )r   r   r	   r
   r   r'   r*   r,   r   r   r   r   r      s    L(>("r   r   )	r
   
__future__r   r"   typingr   	Exceptionr   r   r   r   r   <module>r3      s+   
 #  -I -8" 8"r   