# PR #256 CI 워처 — 증권 이미지 업로드

## 목표
`Jeon-Jonghyuk/InsuRo` PR **#256** 의 CI 가 전부 통과하면 **머지만** 하고 ANU 에 보고한다.
★ **배포는 하지 마라.** 배포는 ANU 가 직접 한다(실증까지 묶어서 해야 한다).

## 배경
증권 이미지(JPEG/PNG) 업로드 지원. 회장 요구 *"고객이 사진 찍어 보내는 경우"*.
실호출 실증 있음(PNG 에서 담보 7건 + 상품명 + 계약일 추출, 57.2초).
ANU 가 최신 `origin/main`(71385b1) 을 병합해 브랜치를 동기화했다.
로컬 검증: 병합 충돌 0건 · `pytest test_policy_image_upload_task3010.py` **26 passed**.

## 절차
1. 토큰 로드
   ```
   set -a; source /home/jay/workspace/.env.keys; set +a
   ```
2. CI 확인 (최대 30분, 3분 간격 폴링)
   ```
   R=Jeon-Jonghyuk/InsuRo
   H=$(GH_TOKEN="$BOT_GITHUB_TOKEN" gh api repos/$R/pulls/256 --jq '.head.sha')
   GH_TOKEN="$BOT_GITHUB_TOKEN" gh api repos/$R/commits/$H/check-runs \
     --jq '.check_runs[] | "\(.conclusion // .status) \(.name)"'
   GH_TOKEN="$BOT_GITHUB_TOKEN" gh api repos/$R/pulls/256 --jq '.mergeable_state'
   ```
3. **모든 체크가 `success`** 이면 머지한다.
   ```
   GH_TOKEN="$BOT_GITHUB_TOKEN" gh api -X PUT repos/$R/pulls/256/merge -f merge_method=squash
   ```
   ★ 동일 기능의 `gh` CLI 서브커맨드는 하네스가 차단한다. 위 REST 경로만 쓴다.
   ★ `GH_TOKEN` 을 반드시 주입하라. 빠뜨리면 회장 개인 PAT 로 인증돼 감사기록이 오염된다
     (2026-08-25 에 실제로 2건 발생했다).

4. 머지 후 검증
   ```
   cd /home/jay/projects/InsuRo && git fetch origin main -q
   git rev-parse --short origin/main
   git show origin/main:src/pages/PolicyAnalysis.tsx | grep -c 'POLICY_ACCEPTED_EXTENSIONS'
   git show origin/main:server/main.py | grep -ci 'cafe'
   ```
   → 첫 값은 **1 이상**, 둘째 값은 **8 이상**이어야 한다.
     (둘째가 8 미만이면 t3014 회귀 — 즉시 보고하고 더 진행하지 마라)

## 실패 시
- CI 실패 → 머지하지 말고 실패한 체크 이름과 요약을 보고
- `mergeable_state` 가 `dirty`/`blocked` → 머지하지 말고 상태 보고
- 30분 초과 → 머지하지 말고 현재 상태 보고
- 머지 409/405 → `mergeable_state` 와 함께 보고

## ★ 하지 말 것
- **배포 금지** (`scripts/deploy/insuro-deploy.sh` 실행 금지)
- 다른 PR 손대기 금지
- 코드 수정 금지

## 보고
결과를 이 챗(6937032012)으로 **5줄 이내**:
PR 번호 · 최종 CI 상태 · 머지 여부 · main sha · 검증 2값(이미지 업로드 / cafe 건수)
