# task-1007.1 완료 보고서: token-tracker.py TEAM_RE 파싱 정규식 개선

## SCQA

**S**: token-tracker.py가 JSONL 세션 로그에서 팀 ID를 추출하여 token-ledger.json에 기록하고 있으며, 763개 작업 항목을 관리 중이다.

**C**: TEAM_RE 정규식의 `\S+` 폴백이 Python 타입 어노테이션(`team_id: str,`)을 team_id로 잘못 캡처하여, task-4.4의 team_id가 "str,"로 부정확하게 기록됨. 대시보드 토큰 탭에서 팀별 필터링 시 데이터 오류 발생.

**Q**: TEAM_RE 정규식을 개선하여 타입 어노테이션 오매칭을 방지하고, 기존 잘못된 데이터를 보정할 수 있는가?

**A**: `\S+` 폴백을 하이픈 필수 패턴(`[a-z][a-z0-9]*-[a-z][a-z0-9-]*[a-z0-9]`)으로 교체하여 Python 타입명(str, int, Optional 등) 오매칭 차단. token-ledger.json의 task-4.4 team_id를 빈 문자열로 보정. pytest 33건 전체 통과(기존 24 + 신규 9), pyright 에러 0건.

## 수정 파일

- `/home/jay/workspace/scripts/token-tracker.py` — TEAM_RE 정규식 수정 (line 23-25)
- `/home/jay/workspace/scripts/tests/test_token_tracker.py` — TestTeamRE 테스트 9건 추가
- `/home/jay/workspace/memory/token-ledger.json` — task-4.4 team_id "str," → "" 보정

## 변경 상세

### 1. TEAM_RE 정규식 수정

변경 전:
```python
TEAM_RE = re.compile(r"(?:팀|team_id|team)\s*[:：]\s*(dev\d+-team|marketing|anu-direct|\S+)")
```

변경 후:
```python
TEAM_RE = re.compile(
    r"(?:팀|team_id|team)\s*[:：]\s*(dev\d+-team|marketing|anu-direct|[a-z][a-z0-9]*-[a-z][a-z0-9-]*[a-z0-9])"
)
```

폴백 패턴 설계 근거:
- 하이픈 필수: 모든 비명시 팀 이름은 하이픈 포함 (qa-team, design-team 등)
- 소문자 영문 시작/끝: 쉼표, 대괄호 등 후행 문자 배제
- marketing, anu-direct는 명시 패턴으로 이미 처리

### 2. Ledger 데이터 보정

- task-4.4: `"team_id": "str,"` → `"team_id": ""`
- 전체 763개 항목 스캔 결과, 다른 비정상 team_id 없음

## 테스트 결과

### pytest (33 passed, 0.10s)

기존 24건: 전체 PASSED (회귀 없음)
신규 9건 (TestTeamRE): 전체 PASSED
- test_dev_team_pattern: dev1-team 정상 매칭 ✓
- test_marketing_pattern: marketing 명시 매칭 ✓
- test_anu_direct_pattern: anu-direct 명시 매칭 ✓
- test_str_comma_not_captured: "str," 비매칭 확인 ✓
- test_type_annotation_int_not_captured: "int" 비매칭 확인 ✓
- test_optional_type_not_captured: "Optional[str]" 비매칭 확인 ✓
- test_future_team_with_hyphen: "qa-team" 폴백 매칭 ✓
- test_korean_colon: 한글 콜론(：) 매칭 ✓
- test_team_id_with_trailing_comma: 후행 쉼표 무시 ✓

### pyright

0 errors, 0 warnings, 0 informations

## 발견 이슈 및 해결

### 자체 해결 (3건)
1. **TEAM_RE `\S+` 폴백이 타입 어노테이션 캡처** — 하이픈 필수 패턴으로 교체하여 비매칭 보장
2. **task-4.4 team_id "str,"로 잘못 기록** — 빈 문자열로 보정, JSON 유효성 검증 완료
3. **미래 팀 이름 대응 부재** — 폴백 패턴에 `[a-z][a-z0-9]*-[a-z][a-z0-9-]*[a-z0-9]` 추가로 하이픈 포함 팀 이름 자동 매칭

### 범위 외 미해결 (0건)
없음

## QC 자동 검증

(아래 첨부 예정)
