# 구현: task-timer.py task_id 형식 문제 개선

## 배경
오딘(2팀) 분석 결과: `memory/research/task-timer-format-analysis.md` 참조
- dispatch.py가 `task-N`으로 task_id 생성, task-timer.py는 `task-N.N`만 허용 → 불일치
- 팀장들이 task-timer end에서 반복 에러 발생
- 권장 방안: 하이브리드 (regex 완화 + fuzzy match + dispatch 재시도)

## 구현 항목

### 1. task-timer.py 수정
파일: `/home/jay/workspace/memory/task-timer.py`

**1-1. regex 완화**
- 현재: `^task-\d+\.\d+$` (task-N.N만 허용)
- 변경: `^task-\d+(\.\d+)?$` (task-N도 허용)

**1-2. fuzzy match end 구현**
- `end` 명령에서 `task-N`이 입력되면:
  - 정확 매칭 먼저 시도 (`task-N`)
  - 없으면 `task-N.*` 패턴으로 running 상태인 항목 검색
  - running 항목이 1개면 자동 매칭하여 종료
  - running 항목이 여러 개면 가장 최신 것을 종료
  - 없으면 기존처럼 "not found" 에러
- `start` 명령은 입력된 ID 그대로 사용 (변환 없음)

**1-3. status 명령도 동일 fuzzy match 적용**

### 2. dispatch.py 수정
파일: `/home/jay/workspace/dispatch.py`

**2-1. task-timer start를 task-N.N 형식으로 호출**
- 현재: `task-timer.py start {task_id}` → task_id가 `task-417` 형식
- 변경: `task-timer.py start {task_id}.1` 로 항상 `.1` 붙여서 호출
- 단, 이미 `.`이 포함된 task_id면 그대로 사용

**2-2. start 실패 시 에러 로그 강화**
- 현재: WARNING만 로깅
- 변경: WARNING + 실패 원인 포함 (stderr 캡처)

### 3. DIRECT-WORKFLOW.md 수정
파일: `/home/jay/workspace/prompts/DIRECT-WORKFLOW.md`

**3-1. 팀장에게 전달되는 task_id 명확화**
- 프롬프트에 `task_id: task-417`이 아닌 `task_id: task-417.1`로 전달되도록
- 또는 "task-timer 호출 시 `.1`을 붙여라" 안내 추가

### 4. 완료 통보 스크립트 수정
파일: `/home/jay/workspace/notify-completion.py` (존재 시)

**4-1. .done 파일 중복 방지**
- task-417.0.done, task-417.1.done, task-417.done 3개 생성 → 1개만 생성
- 규칙: `{task_id}.done` 하나만 (dispatch에서 전달한 원본 task_id 사용)

## 검증 기준
- [ ] `task-timer.py end task-419` → task-419.1이 running이면 자동 매칭 성공
- [ ] `task-timer.py start task-419` → 정상 동작 (task-N 형식 허용)
- [ ] `task-timer.py end task-419.1` → 기존처럼 정확 매칭 동작
- [ ] dispatch.py에서 task-timer start가 성공하는지 확인
- [ ] 기존 테스트 전체 통과 (`pytest`)
- [ ] `.done` 파일 중복 생성 안 됨

## 주의사항
- 기존 task-timers.json 데이터 호환성 유지 (352건의 task-N.N + 10건의 task-N)
- task-timer.py의 다른 명령어(list, log, status)도 fuzzy match 적용 여부 확인
- pyright 타입 체크 0 에러 유지
