# 머지 판단 자동 감지 시스템

## 배경
팀장이 worktree 작업 완료 후 보고서에 "merge 판단은 아누에게 위임"이라고 적었는데,
아누가 이를 시스템적으로 감지하지 못해 제이회장님이 직접 확인해야 하는 사고 발생.
팀장의 머지 의견/요청을 자동으로 감지하고 아누에게 명확히 전달하는 시스템 필요.

## 작업 범위 (3개 파일 수정 + 1개 스펙 문서 작성)

### 1. `report_parser.py` 수정
**파일**: `/home/jay/workspace/report_parser.py`

`parse_report()` 함수에 머지 관련 필드 추가:

```python
# 추가할 필드
result["merge_needed"] = False      # 머지 필요 여부
result["merge_branch"] = None       # 워크트리 브랜치명
result["merge_worktree"] = None     # 워크트리 경로
```

**감지 패턴** (정규식):
- `merge`, `머지` 키워드가 포함된 라인
- `worktree`, `워크트리` 키워드가 포함된 라인
- `브랜치`, `branch` + `task/` 패턴
- `merge 판단`, `머지 판단`, `merge 필요`, `머지 필요`
- `아누에게 위임`, `아누 판단`

**브랜치명 추출**: `task/task-\d+\.\d+-dev\d+` 패턴으로 자동 추출
**워크트리 경로 추출**: `/home/jay/projects/.+/.worktrees/.+` 패턴

`summarize_oneline()` 함수도 수정:
- `merge_needed=True`이면 요약 끝에 `| 🔀 머지 필요` 추가

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

Step 4.5 [Worktree 정리] 섹션 이후에 **필수 보고 항목** 명시 추가:

```markdown
## 보고서 필수 섹션 (Worktree 사용 시)

보고서에 반드시 아래 섹션을 포함하세요:

### 머지 판단
- **머지 필요**: Yes / No
- **브랜치**: task/task-{task_id}-{team_short}
- **워크트리 경로**: {worktree_path}
- **머지 의견**: (테스트 결과, 코드 품질, 충돌 가능성 등 판단 근거)
```

### 3. `.done` 이벤트 파일 확장
**파일**: `/home/jay/workspace/prompts/DIRECT-WORKFLOW.md` (Step 5)

현재 `.done` 파일 생성 코드:
```python
p.write_text(json.dumps({'task_id':'{task_id}','status':'done'}))
```

수정 후:
```python
p.write_text(json.dumps({
    'task_id': '{task_id}',
    'status': 'done',
    'merge_needed': True/False,   # worktree 사용 시 True
    'merge_branch': 'task/task-{task_id}-{team_short}' or None
}))
```

워크트리 사용 여부는 Step 1.5에서 worktree를 생성했는지로 판단.
- worktree 생성했으면: `merge_needed: true`, `merge_branch: "task/task-{task_id}-{team_short}"`
- worktree 미사용이면: `merge_needed: false`, `merge_branch: null`

### 4. 스펙 문서 작성
**파일**: `/home/jay/workspace/memory/specs/merge-detection-spec.md`

아래 내용 포함:
- 문제 정의 (실제 사고 사례)
- 감지 흐름도 (팀장 보고 → .done 파일 → 아누 파싱 → 머지 알림)
- 키워드 패턴 목록
- 아누 처리 절차: .done에 merge_needed=true → 보고 시 "🔀 머지 대기" 강조 표시
- 테스트 시나리오 3개

## QC 기준
- `report_parser.py` 기존 테스트가 있으면 기존 테스트 통과 유지
- 새로운 테스트 추가: merge_needed 파싱 테스트 최소 5개 케이스
  - 케이스 1: "merge 판단은 아누에게 위임" → merge_needed=True
  - 케이스 2: "머지 필요 없음" → merge_needed=False
  - 케이스 3: 머지 관련 키워드 없음 → merge_needed=False
  - 케이스 4: 브랜치명 추출 테스트
  - 케이스 5: summarize_oneline에 머지 표시 추가 테스트
- DIRECT-WORKFLOW.md 수정 후 문법 오류 없는지 확인
- pyright 타입 체크 0 errors
