# task-timer.py Task ID 포맷 v2 파싱 수정

## 배경
task-timer.py가 `task-1845_3.3` 같은 Phase 포맷(언더스코어 포함)을 파싱 못 해서 start 실패.
dispatch.py의 generate_task_id()는 task-1853에서 포맷 v2 통일 완료했지만, task-timer.py는 미수정.

## Task ID 포맷 v2 (단일 소스)
```
task-{번호}[_{총Phase}.{현Phase}][_{병렬}][+{재시도}]
```
예시:
- `task-1845` — 단독
- `task-1845_3.3` — 3Phase 중 3번째
- `task-1845_a` — 병렬 1번째
- `task-1845_3.2_b` — 3Phase 중 2번째, 병렬 2번째
- `task-1845+1` — 재시도 1회

## 현재 에러
```
[WARNING] task-timer start 실패 (task_id=task-1845_3.3):
```
task-timer.py의 task_id 검증 정규식이 `task-{숫자}.{숫자}` 패턴만 허용하여 `_` 포함 ID를 거부.

## 수정 사항

### 1. task_id 검증 정규식 수정
- 파일: `/home/jay/workspace/memory/task-timer.py`
- 현재 패턴 찾기: `task-\d+` 또는 `task-\d+\.\d+` 류의 검증
- 수정 패턴: `^task-\d+(_\d+\.\d+)?(_[a-z])?(\+\d+)?$`
- 기존 `task-번호.1` 형식도 하위 호환 유지: `^task-\d+(\.\d+)?(_\d+\.\d+)?(_[a-z])?(\+\d+)?$`

### 2. task_id 파싱 로직 수정
- 기본 번호 추출 시 `_`와 `+` 이후는 무시하고 첫 번호만 추출
- 예: `task-1845_3.3` → 기본 번호 1845
- 예: `task-1845_3.2_b+1` → 기본 번호 1845

### 3. 기존 기능 영향 확인
- `start`, `end`, `log` 명령 모두 새 포맷 지원
- task-timers.json에 저장 시 full task_id 그대로 저장 (축약 금지)

## 검증 시나리오 (이게 되면 성공)
1. `python3 task-timer.py start task-1845_3.3 --team dev1-team --desc "테스트"` → 성공
2. `python3 task-timer.py start task-1845_a --team dev1-team --desc "테스트"` → 성공
3. `python3 task-timer.py start task-1845+1 --team dev1-team --desc "테스트"` → 성공
4. `python3 task-timer.py start task-1845 --team dev1-team --desc "테스트"` → 성공 (기존 호환)
5. `python3 task-timer.py start task-1845.1 --team dev1-team --desc "테스트"` → 성공 (기존 호환)
6. `python3 task-timer.py start 잘못된형식 --team dev1-team --desc "테스트"` → 에러
7. 각 start 후 end도 정상 동작

## 주의사항
- task-timer.py 수정 후 즉시 커밋
- 기존 pytest가 있으면 실행하여 회귀 확인