# task-1548: 네이버 블로그 팝업 스크린샷 디버깅 + 좌표 클릭 방식 구현

## 목표
네이버 블로그 글쓰기 페이지의 임시저장 복원 팝업을 **스크린샷 캡처 → 좌표 파악 → 자연스러운 마우스 이동 후 클릭** 방식으로 처리한다.

## 배경
- 1팀, 2팀이 CSS 셀렉터 기반으로 3회 시도했으나 전부 실패
- Playwright `.click()` 에서 에러 발생 — 셀렉터가 네이버 SE 에디터의 복잡한 iframe 구조에서 안 먹힘
- **CSS 셀렉터 접근은 포기.** 좌표 기반 클릭으로 전환한다.
- ⚠️ 봇 탐지 방지를 위해 마우스를 갑자기 이동시키면 안 됨. 반드시 자연스러운 곡선 이동 필요.
- 프로젝트 경로: `/home/jay/projects/BlogAuto`

## 작업 절차

### Phase 1: 팝업 스크린샷 캡처 (디버깅)

1. CDP로 Chrome 세션에 연결
2. 네이버 블로그 글쓰기 페이지 접속: `https://blog.naver.com/{blog_id}?Redirect=Write`
   - blog_id: `incar_top`
3. 페이지 로드 후 **5초 대기** (팝업이 뜰 시간)
4. 스크린샷 캡처: `page.screenshot(path="/home/jay/workspace/memory/reports/naver-popup-debug.png", full_page=False)`
5. 추가로 page 전체 HTML 덤프: `page.content()` → `/home/jay/workspace/memory/reports/naver-popup-debug.html`
6. iframe 목록도 캡처: `page.frames` 각각의 URL과 name
7. 스크린샷을 아누에게 전송: cokacdir --sendfile 명령 사용
   ```
   /usr/local/bin/cokacdir --sendfile /home/jay/workspace/memory/reports/naver-popup-debug.png --chat 6937032012 --key c119085addb0f8b7
   ```

### Phase 2: 좌표 클릭 방식 구현

스크린샷에서 팝업과 "취소" 버튼 위치를 확인한 후:

1. naver_playwright.py의 `_handle_draft_modal()` 수정
2. 기존 CSS 셀렉터 방식은 **1차 시도로만** 남기고
3. 실패 시 **스크린샷 기반 좌표 클릭**으로 폴백:
   ```python
   # 1차: CSS 셀렉터 시도 (기존)
   # 2차: 스크린샷 기반 좌표 클릭 (신규)
   screenshot = page.screenshot()
   # 팝업이 보통 화면 중앙에 뜨므로, 취소 버튼 예상 좌표 계산
   # 마우스를 자연스럽게 이동시킨 후 클릭
   self._human_mouse_move(page, cancel_x, cancel_y)
   _random_delay(0.3, 0.8)
   page.mouse.click(cancel_x, cancel_y)
   ```
4. **반드시 `_human_mouse_move()` (베지어 곡선)으로 이동** 후 클릭
   - `page.mouse.click(x, y)` 직접 호출 금지 — 봇 탐지됨
   - 현재 마우스 위치 → 목표 좌표로 자연스러운 곡선 이동 → 랜덤 딜레이 → 클릭

### Phase 3: 업로드 테스트

팝업 처리 성공 후:
- ⚠️ **임시저장(draft)만** — public 절대 금지
- 콘텐츠: `/home/jay/workspace/output/blog/naver/content-20260408-인카금융.md`
- 이미지: `/home/jay/workspace/output/blog/naver/images/` (3장)
- 블로그 ID: incar_top
- visibility: draft

## 주의사항
- ⚠️ **마우스 순간이동 절대 금지** — 네이버가 봇 탐지함. `_human_mouse_move()` 필수
- ⚠️ **임시저장(draft)만** — public 발행 절대 금지
- Phase 1 스크린샷을 반드시 아누(제이회장님)에게 전송해서 확인받을 것
- 에러 발생 시 매 단계마다 스크린샷 캡처

## 보고서
`memory/reports/task-1548.md`에 작성
