고도화 Phase 3 — 고급 테스트 + 커버리지 90% 달성

## 작업 개요
고도화 미팅(2/28) Phase 3 중 Task 3.2: 고급 테스트 작성 + 커버리지 90% 달성

## 현재 상태
- 145개 테스트 전체 PASS
- 전체 커버리지: 66%
- 모듈별:
  - dispatch.py: 50% (dispatch() 함수 미커버 → cokacdir 외부 호출 의존)
  - task-timer.py: 84%
  - team_prompts.py: 67%
  - logger.py: 100%
  - error_alert.py: 0% (팀별 경로에 테스트 존재하나 tests/에서 미실행)

## 세부 작업

### 1. error_alert.py 테스트를 tests/ 디렉토리로 이동
- teams/dev2/tests/test_error_alert.py → tests/test_error_alert.py로 복사/이동
- import 경로 수정하여 utils.error_alert에서 직접 import
- 이것만으로 error_alert.py 0% → 대폭 상승

### 2. dispatch.py 커버리지 향상 (50% → 80%+)
- dispatch() 함수의 외부 호출(cokacdir, subprocess)을 mock 처리
- unittest.mock.patch로 subprocess.run 모킹
- 테스트 항목:
  - dispatch() 성공 케이스: subprocess.run 반환값 모킹 → 정상 흐름 검증
  - dispatch() 실패 케이스: subprocess CalledProcessError → 에러 처리 검증
  - _build_team_prompt() 내부 호출 검증
  - _register_followup() 모킹 검증

### 3. team_prompts.py 커버리지 향상 (67% → 85%+)
- _build_direct_prompt() 내부 분기 테스트 추가
- _build_glm_prompt() 내부 분기 테스트 추가
- _build_verification_section() level별 (normal/critical/security) 테스트
- _build_cowork_section() 팀별 동적 생성 테스트

### 4. task-timer.py 커버리지 향상 (84% → 90%+)
- 미커버 라인 분석하여 추가 테스트:
  - 파일 읽기/쓰기 에러 핸들링 (OSError 시뮬레이션)
  - CLI 엔트리포인트 (sys.argv 패치)
  - edge case: 빈 파일, 잘못된 JSON 등

### 5. 회귀 테스트 (tests/test_regression.py)
- 이전 버그가 재발하지 않도록 핵심 회귀 케이스 등록:
  - TestCLIMain 재귀 이슈 방어 (monkeypatch 안전성)
  - dev3 GLM 프롬프트에 팀원 이름 대신 팀 ID 포함 확인
  - task-timer.py --help 미지원 확인 (run_tests.py 호환성)
  - generate_task_id() 기존 ID와 충돌 없음 확인

## 검증 기준
- 전체 pytest 0 failures
- 전체 커버리지 80% 이상 (목표 90%, 최소 80%)
- 모든 모듈 50% 이상
- coverage-report.txt 갱신

## 참고 파일
- tests/coverage-report.txt (현재 커버리지 상세)
- tests/test_dispatch.py, test_team_prompts.py, test_task_timer.py (기존 단위 테스트)
- tests/test_integration.py (통합 테스트)
- utils/error_alert.py (0% 커버리지 모듈)
- teams/dev2/tests/test_error_alert.py (기존 테스트 참고)