# task: member-status hook 오탐 원인 분석 + 개선

## 배경
마케팅팀에 task-1204.1 위임 중인데, 대시보드에서 **출판팀 에라토(Erato)**가 "작업중"으로 표시.
마케팅팀 작업인데 출판팀 멤버 상태가 바뀌는 것은 논리적 오류.

## 원인 추정
`~/.claude/hooks/pre-tool-use.sh`의 member-status 업데이트 메커니즘:
1. Task/Agent tool 호출 시 프롬프트 텍스트에서 멤버 이름을 grep으로 검색
2. `parse_member_id()` 함수가 `echo "$text" | grep -qi '에라토\|erato'` 로 매칭
3. **문제**: 마케팅팀 작업 프롬프트 안에 "에라토" 라는 단어가 포함되면 오탐 발생
   - 예: 벤치마킹 리서치 중 "에라토스테네스", "erato" 관련 텍스트
   - 또는 프롬프트에 조직 구조 설명이 포함되면서 출판팀 멤버 이름이 언급

## 조사 사항

### 1. 오탐 원인 확인
- `~/.claude/hooks/lib/.member-map-cache.sh` 의 매칭 로직 확인
- 현재 매칭 방식: `grep -qi '에라토\|erato'` → 부분 문자열 매칭이라 오탐 취약
- task-1204.1의 프롬프트/작업 내용에서 "에라토" 가 어디서 등장하는지 확인

### 2. 근본 문제
- **팀 범위 무시**: hook이 "어떤 팀의 세션인지" 확인하지 않고, 프롬프트 텍스트만으로 멤버 매칭
- 마케팅팀 세션에서 Task tool을 쓰는데, 출판팀 에라토가 매칭되면 안 됨
- **해결 방향**: 현재 세션의 봇/팀 정보를 활용하여, 해당 팀 소속 멤버만 매칭하도록 제한

### 3. 개선 방안 설계
옵션 A: hook에서 BOT_ID/팀 정보를 확인하여 해당 팀 멤버만 매칭
옵션 B: 매칭 시 단어 경계(word boundary) 적용하여 부분 문자열 오탐 방지
옵션 C: 정확한 매칭 패턴 강화 (예: "에라토에게" "에라토가" 등 조사 포함 패턴만)
옵션 D: A+B 조합

### 4. 수정 대상 파일
- `~/.claude/hooks/pre-tool-use.sh` — 팀 범위 필터 추가
- `~/.claude/hooks/post-tool-use.sh` — 동일 수정
- `~/.claude/hooks/lib/parse-member-id.sh` — 매칭 로직 개선
- `~/.claude/hooks/lib/generate-member-map.py` — 캐시 생성 시 팀 정보 포함
- `~/.claude/hooks/lib/.member-map-cache.sh` — 재생성

### 5. 테스트
- 마케팅팀 세션에서 "에라토" 텍스트가 포함된 프롬프트 → 에라토 매칭 안 되는지 확인
- 출판팀 세션에서 "에라토에게 위임" → 에라토 매칭 되는지 확인

## 주의
- hook 파일은 `~/.claude/hooks/` 경로 (workspace 밖)
- 수정 전 반드시 백업 (*.bak3)
- 기존 정상 동작(같은 팀 멤버 매칭)은 깨지면 안 됨