# .done 알림 보고서 요약 품질 개선

## 태스크 ID: task-912.1
## 한정위임: 완료까지

---

## 문제

현재 `scripts/report_utils.py`의 `extract_report_summary()`는 SCQA의 **A** 한 줄만 500자로 잘라서 전송한다.
제이회장님 요구: 봇들이 보고서에 포함하는 수준의 요약을 알림에 포함해야 한다.

현재 알림:
```
✅ task-906.1 완료

[요약] auto_orch.py(591 LOC) + team_lock.py(75 LOC) 구현 완료. pytest 64건 전건 통과...

📄 상세: memory/reports/task-906.1.md
```

개선 후 알림:
```
✅ task-906.1 완료 (dev2-team, 12분 30초)

[요약] auto_orch.py(591 LOC) + team_lock.py(75 LOC) 구현 완료. pytest 64건 전건 통과. pyright 0 에러. systemd timer/service 등록.

📁 생성/수정: 6개 파일
🧪 테스트: pytest 64건 통과, pyright 0 에러
⚠️ 미해결: 1건 (qc_verify.py 환경 이슈)

📄 상세: memory/reports/task-906.1.md
```

## 구현 범위

### `scripts/report_utils.py` 수정

1. `extract_report_summary()` 개선:
   - `max_chars` 기본값 500 → **1000** 으로 확대
   - SCQA **A** 답변 전문 추출 (현재도 동작하지만 500자 제한으로 잘림)

2. **신규 함수** `extract_report_metadata()` 추가:
   보고서에서 구조화된 메타데이터를 추출하여 dict로 반환:
   ```python
   def extract_report_metadata(report_path: Path) -> dict:
       """보고서에서 테스트 결과, 파일 수, 미해결 이슈를 추출"""
       return {
           "test_summary": "pytest 64건 통과, pyright 0 에러",  # 또는 None
           "files_count": 6,       # 생성/수정 파일 수, 또는 None
           "unresolved_count": 1,  # 범위 외 미해결 건수, 또는 0
           "unresolved_items": ["qc_verify.py 환경 이슈"],  # 간단 목록
           "team_id": "dev2-team",  # 또는 None
           "duration": "12분 30초",  # 또는 None
       }
   ```

   추출 방법:
   - **test_summary**: "pytest" 키워드가 포함된 줄에서 "N passed" 패턴 + "pyright" 줄에서 "N errors" 패턴
   - **files_count**: "생성" 또는 "수정" 키워드가 있는 섹션에서 `-` (bullet) 수 카운트
   - **unresolved_count/items**: "미해결" 또는 "범위 외" 키워드 섹션에서 번호 목록 추출
   - **team_id**: .done 파일의 team_id 또는 보고서 내 "팀:" / "team:" 패턴
   - **duration**: .done 파일의 duration 또는 보고서 내 "소요시간" 패턴

3. **신규 함수** `format_notification_message()` 추가:
   ```python
   def format_notification_message(task_id: str, report_path: Path, done_data: dict | None = None) -> str:
       """완료 알림 메시지를 포맷팅"""
   ```
   - summary + metadata를 결합하여 최종 메시지 생성
   - done_data는 .done 파일의 JSON 내용 (team_id, duration_seconds 등)

### `scripts/notify-completion.py` 수정

- `extract_report_summary` 단독 호출 → `format_notification_message` 호출로 교체
- .done 파일의 JSON 내용을 파싱하여 done_data로 전달

### `scripts/activity-watcher.py` 수정

- 동일하게 `format_notification_message` 활용

## 수정 대상 파일

- `scripts/report_utils.py` — 함수 추가
- `scripts/notify-completion.py` — 포맷 함수 호출
- `scripts/activity-watcher.py` — 포맷 함수 호출
- `scripts/tests/test_report_utils.py` — 테스트 추가

## 수정 금지 파일

- `orchestrator/` 전체
- `dashboard/` 전체

## 검증 기준

1. 실제 보고서(memory/reports/task-906.1.md)로 테스트 → 테스트 결과/파일 수/미해결 정상 추출
2. 보고서 없는 경우 → 기존 단순 알림 유지
3. 메시지 길이 Telegram 4096자 제한 이내
4. 기존 테스트 회귀 없음
5. pyright 0 에러, pytest 전건 통과