# 2026-05-07 비하이브 종목분석 메일 분할 발송 사고

코디가 사용자(관리자님) 점검 요청 받아 대신 기록. 레이 세션 호출은 `openclaw` CLI 설정 깨짐(brave plugin) 때문에 차단 상태였음.

## 사고

07:00 cron 실행 중 신규 영상 2건을 처리하는 과정에서 **`email` 명령을 영상별로 따로 호출**해 같은 보고서 형식 메일이 2통으로 분할 발송됨.

- 영상 1: SK이터닉스 `_o96Mx9QD9o`
- 영상 2: 미코 `TX7txAGu32Q`
- 각 영상은 단일 종목(태그 1개) 영상이라 save 자체엔 문제 없었으나, Step 4 메일 발송에서 "한 통" 묶음을 어겼다.
- 사용자가 "왜 2개왔어"로 인지하고 수정 지시.

## 수정 (07:25~07:27 KST)

레이 본인이 텔레그램 세션에서 진행:

1. 구 cron `747e1013-fae5-4e61-b6d3-479a8c68ca22` 삭제 (`agent:stock:main` 세션키)
2. 신 cron `80052b62-1c7a-4f8e-91c9-222ae4c3c045` 등록
   - sessionKey `agent:stock:telegram:direct:8443122995`
   - expr `0 7,12,18 * * 1-5 Asia/Seoul`
3. 페이로드 검증 게이트 추가 (필수 검증, 하나라도 실패 시 전체 발송 금지):
   - 영상 title `#태그` 개수 vs 실제 save 종목 수 대조
   - 자막/제목상 다종목 영상인데 분리 불확실 시 실패 종료
   - 검증 통과 전 save/email/notify 호출 금지
   - 부분 save 후 불일치 발견 시 email/notify 호출 금지
   - "일단 보내고 정정" 명시 금지
4. failureAlert 부착 (`{after:1, channel:telegram, to:8443122995, mode:announce, accountId:stock}`)
5. Step 5: `email <VID1> <VID2> ...` **한 번 호출** 강조

## Why

사용자 명시 요구:
- 성공 → 메일 + 텔레그램 발송
- 실패 → 발송 차단 + 텔레그램 실패알림

분할 호출 시 영상 수만큼 메일이 분리 발송돼 사용자 인지 부담·노이즈 발생.

## How to apply

다음 신규 영상 처리 시 (cron 페이로드와 동일하지만 핵심만 재정리):

- **(a)** 영상별 `#태그` 개수와 save 종목 수 정확 대조. 다종목 영상이면 종목별 JSON을 같은 VIDEO_ID로 여러 번 save
- **(b)** 검증 통과 후 `email` 호출은 **모든 video_ids를 단일 인자열로 한 번** — `email VID1 VID2 ...`
- **(c)** 부분 save 후 검증 실패 → email/notify **절대 호출 금지**
- **(d)** 스크립트 레벨 email 멱등성은 아직 없음 — 페이로드 지시 엄수가 유일한 가드

## 관련 갭 (참고 — 사고 위험 X)

- `cmd_email`에 video_ids fingerprint 기반 멱등성 락 미구현. 분할 호출 방지는 LLM 페이로드 지시에만 의존. 추후 `state/behive_email_sent.json` 추가 검토 가능 (사용자 결정 필요).
- 본 사고 기록은 코디 작업이라 레이 세션 자체엔 회고가 없음. 다음 부팅 시 이 파일을 읽어 같은 실수 반복 차단.

## 12:00 cron 검증 결과

같은 날 12:00 cron 실행됨 (`behive_last_fetch.json` mtime `12:00:13`). 신규 영상 0건이라 발송 0건으로 정상 종료. failureAlert 발동 없음.
