# task-923.1 완료 보고서

## SCQA

**S**: `notify-completion.py`가 작업 완료 시 Telegram으로 요약 메시지를 전송하나, 메시지가 파일로 저장되지 않는다.

**C**: 아누(개발실장)가 `.done` 감지 후 원문 메시지를 읽을 수 없어, 제이회장님께 그대로 전달할 수 없다.

**Q**: Telegram 전송 메시지를 파일로 저장하여 아누가 읽을 수 있게 할 수 있는가?

**A**: `_save_completion_message()` 함수를 추가하여 `memory/events/{task_id}.completion.txt`에 UTF-8로 저장. 체인 중간/일반 분기 2곳에서 Telegram 전송 전에 호출하여, 전송 성공/실패와 무관하게 파일이 항상 저장됨. pytest 33건 전체 통과, pyright 에러 0건, black/isort 준수.

## 수정 파일

- `scripts/notify-completion.py` — `_save_completion_message` 함수 추가 + 2곳 호출
- `scripts/tests/test_notify_completion.py` — `TestSaveCompletionMessage` 클래스 5개 테스트 추가

## 변경 상세

### 1. `_save_completion_message()` 함수 추가 (line 133-141)
- `WORKSPACE_ROOT/memory/events/{task_id}.completion.txt`에 메시지 저장
- 디렉토리 자동 생성 (`mkdir parents=True`)
- OSError 발생 시 `log_protocol`으로 기록 후 조용히 실패 (기존 Telegram 전송에 영향 없음)

### 2. 체인 중간 Phase 분기 호출 (line 420)
- `message.replace()` 직후, `send_telegram_notification()` 직전에 호출
- 체인 정보가 포함된 최종 메시지가 저장됨

### 3. 일반/마지막 Phase 분기 호출 (line 453)
- `_format_notification_message()` 직후, `send_telegram_notification()` 직전에 호출

## 검증 결과

- pyright: 0 errors, 0 warnings
- black: 준수 (변경 없음)
- isort: 준수 (변경 없음)
- pytest: 33 passed in 0.18s (기존 28 + 신규 5)

## 발견 이슈 및 해결

### 자체 해결 (1건)
1. **기존 테스트에 `_save_completion_message` 커버리지 부재** — `TestSaveCompletionMessage` 클래스 5개 테스트 추가 (파일 저장, 디렉토리 생성, 덮어쓰기, OSError 처리, main 통합)

### 범위 외 미해결 (2건)
1. **test_runner가 SKIP** — `--check-files` 기반 자동 추론에서 관련 테스트 파일 0개로 판정. scripts/tests/ 경로가 표준 구조(tests/test_X.py)와 다르기 때문. 기존 구조 문제이며 본 작업 범위 외.
2. **tdd_check SKIP** — Lv.1 단순 수정 작업이므로 TDD 미적용 (규칙상 정당).

## QC 자동 검증

```json
{
  "pyright_check": "PASS (0 errors)",
  "style_check": "PASS (black OK, isort OK)",
  "spec_compliance": "PASS",
  "data_integrity": "PASS"
}
```
