# task-1918_b 완료 보고서: dispatch 관련 테스트 12건 실패 수정

## SCQA

**S**: dispatch.py 관련 테스트 5개 파일(125건)에서 12건 실패가 보고되었다. test_dispatch_platform_rules 6건, test_dispatch_gate 3건, test_integration 1건, test_regression 1건, test_meta_ads_client 1건.

**C**: 실행 결과 실제 실패는 2건만 존재(test_integration, test_regression). 나머지 10건은 이미 수정 완료 상태였다. 실패 2건 모두 `generate_task_id()`가 `task-N.1` 형식(sub-ID 포함)을 반환하길 기대했으나, 구현이 `task-N` 형식으로 변경된 후 테스트가 업데이트되지 않은 것이 원인.

**Q**: 테스트 기대값을 현재 구현에 맞게 수정하여 전체 125건 PASS를 달성할 수 있는가?

**A**: 테스트 2건의 assert 기대값을 `task-N.1` → `task-N`으로 수정하여 125건 전체 PASS 달성. 구현(dispatch.py)은 변경하지 않음 — 수정 원칙 1("구현이 맞고 테스트가 outdated → 테스트 수정") 적용.

## 수정 파일별 검증 상태

| 파일 | 변경 내용 | grep 검증 | 상태 |
|------|-----------|-----------|------|
| tests/test_integration.py:154 | assert `"task-1.1"` → `"task-1"` | grep `task-1"` OK | verified |
| tests/test_regression.py:196 | assert `"task-11.1"` → `"task-11"` | grep `task-11"` OK | verified |

## 판단 근거

- `generate_task_id()`는 dispatch.py:1303에서 `f"task-{next_num}"` 형식으로 ID 생성 (sub-ID `.1` 없음)
- `_compute_next_id_from_timers()`는 기존 `.1` suffix가 있는 키도 정규식 `^(\d+)`로 base 숫자 정상 파싱
- 기존 timer 데이터의 `"task-5.1"`, `"task-10.1"` 키는 호환성 유지 (파싱 로직이 처리)

## 테스트 결과

```
125 passed in 2.45s
```

- test_dispatch_platform_rules: 13 passed
- test_dispatch_gate: 36 passed
- test_integration: 17 passed (수정 1건 포함)
- test_regression: 10 passed (수정 1건 포함)
- test_meta_ads_client: 49 passed

## 발견 이슈 및 해결

### 자체 해결 (2건)
1. **test_integration.py:154 기대값 불일치** — assert를 `"task-1"` 로 수정
2. **test_regression.py:196 기대값 불일치** — assert를 `"task-11"` 로 수정

### 범위 외 (1건)
1. **Pyright import 해결 실패 (test_integration.py, test_regression.py)** — 테스트 환경의 동적 모듈 로딩(importlib.util.spec_from_file_location) 사용으로 인한 기존 진단. 본 작업 범위 외.

## 모델 사용 기록
- 팀원: 루(Lugh) / 작업: 테스트 2건 수정 + 검증 / 사용 모델: sonnet / 정당성: -
