# task-620.1: activity-watcher 알림에 보고서 요약 포함

**팀**: dev3-team | **완료**: 2026-03-16 17:05 | **담당**: 라(Ra) 팀장 + GLM-5

---

## SCQA

**S**: activity-watcher.py가 processing→idle 전환을 감지하면 텔레그램 알림에 보고서 경로만 표시했다. 제이회장님이 매번 보고서를 직접 열어야 했다.

**C**: 핵심 내용 확인을 위한 추가 클릭이 필요하여, 알림 즉시 작업 결과를 파악할 수 없었다.

**Q**: 보고서의 SCQA 요약을 텔레그램 알림 메시지에 직접 포함할 수 있는가?

**A**: `extract_report_summary()` 함수를 신규 구현하여 보고서 SCQA 섹션에서 S/A 1줄씩 추출, 텔레그램 알림에 포함. 23개 테스트 전체 통과, pyright 에러 0건.

---

## 변경 파일

- `/home/jay/workspace/scripts/activity-watcher.py` — `extract_report_summary()` 추가, 메인 루프 수정
- `/home/jay/workspace/scripts/tests/test_activity_watcher.py` — TestExtractReportSummary 5개 케이스 추가

---

## 변경 내용

### 1. extract_report_summary() 함수 추가 (line 123~214)
- 보고서 파일 없으면 폴백: `"보고서: memory/reports/{task_id}.md"`
- SCQA 섹션 탐지 후 `**S**:` / `**A**:` 줄 추출 (150자 제한)
- 수정 파일 수(`수정: N건` 패턴), 테스트 결과(`pass/통과/fail` 키워드) 선택 포함
- 텔레그램 4096자 제한 → 4000자 절삭

### 2. 메인 루프 수정 (line 297~303)
- 기존: `f"✅ {task_id} 완료. 보고서: memory/reports/{task_id}.md"`
- 변경: `extract_report_summary(task_id, team)` → 요약 포함 메시지

### 알림 예시 (task-619.1 기준)
```
✅ task-619.1 완료 (dev3)
S: .done 프로토콜이 4차례 개선에도 완료 감지 신뢰성 문제가 반복되어 왔다.
A: 3초 폴링 방식의 activity-watcher.py 데몬을 신규 구현하여 전환 감지 후 즉각 알림을 전송.
```

---

## 발견 이슈 및 해결

### 자체 해결 (1건)
1. **`import re` 함수 내부 위치** — 코딩 표준(imports at top) 위반. top-level imports로 이동.
   - 수정: `activity-watcher.py:12` 에 `import re` 추가, 함수 내부(line 178 기존) 제거

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

---

## 체크리스트 결과

- [x] 스펙 전수 체크: extract_report_summary, 폴백, 4096자 제한, 비SCQA 크래시 없음 — 모두 구현
- [x] 테스트 작성: TestExtractReportSummary 5개 케이스 추가 (전체 23개 통과)
- [x] black/isort: `All done! 1 file would be left unchanged` / ISORT OK
- [x] pyright: `0 errors, 0 warnings, 0 informations`
- [x] 기존 테스트 회귀 없음: 860 passed, 47 warnings in 12.51s

---

## QC 검증 결과

```json
{
  "task_id": "task-620.1",
  "verified_at": "2026-03-16T17:04:54",
  "overall": "FAIL",
  "checks": {
    "api_health": {"status": "SKIP"},
    "file_check": {"status": "FAIL", "note": "events/.done 미생성 (finish-task.sh 실행 전 정상)"},
    "data_integrity": {"status": "PASS"},
    "test_runner": {"status": "PASS", "details": "860 passed in 12.50s"},
    "tdd_check": {"status": "PASS"},
    "schema_contract": {"status": "SKIP"},
    "pyright_check": {"status": "PASS", "details": "0 errors"},
    "style_check": {"status": "PASS", "details": "black OK, isort OK"},
    "scope_check": {"status": "SKIP"},
    "critical_gap": {"status": "PASS"}
  },
  "summary": "6 PASS, 1 FAIL(예정), 3 SKIP"
}
```

> file_check FAIL: `events/task-620.1.done` 미생성은 finish-task.sh 실행 후 해소 예정. 작업 품질 이슈 없음.
