# InsuRo 이미지 편집기 — WM삭제(인페인팅) 기능 대폭 개선

## 작업 레벨: Lv.2

## 프로젝트 시스템 3문서
- DevSystem: `/home/jay/workspace/memory/plans/anu-guide-system/plan.md`

## 프로젝트
- InsuRo: `/home/jay/projects/InsuRo`
- 배포: Cloudflare Pages (GitHub push → CI → 자동 배포)

## 현재 문제점
현재 WM삭제 기능은 200x80 고정 사각형으로 영역 선택 후, 단순 8방향 이웃 픽셀 평균 3회 반복 — 사실상 "블러" 수준이라 워터마크 흔적이 남고 품질이 낮음.

## 요구사항

### 1. 브러시 기반 자유 마스크 + 크기 조절
- 기존 고정 사각형 대신, 브러시로 자유롭게 칠해서 마스크 영역 지정
- **브러시 크기 슬라이더** 추가 (5px ~ 100px, 기본 20px)
- 브러시 칠한 영역이 반투명 빨간색/주황색으로 시각적으로 표시
- 마스크 초기화(리셋) 버튼
- 사각형 선택도 유지 (모드 전환: 브러시/사각형)

### 2. 향상된 인페인팅 알고리즘 (PatchMatch 기반)
현재의 단순 이웃 평균 대신, 주변 텍스처/패턴을 분석해서 자연스럽게 채우는 방식:

**구현 방식 (클라이언트 사이드, 서버 불필요):**
- PatchMatch 기반 context-aware fill:
  1. 마스크 영역의 각 패치(예: 7x7)에 대해
  2. 마스크 밖 영역에서 가장 유사한 패치를 검색 (SSD/SAD 기반)
  3. 유사 패치의 픽셀로 대체
  4. 경계 부분 블렌딩 (가우시안)
  5. 3~5회 반복으로 수렴
- 대안: 멀티스케일 inpainting — 축소 → 인페인팅 → 확대 → 정밀 인페인팅
- 성능: 800x600 이미지 기준 2초 이내 목표

### 3. UI 개선
- 인페인팅 진행률 표시 (progress bar)
- "적용 전/후" 비교 토글
- 브러시 커서가 실제 크기 반영 (원형 커서)

## 수정 파일
- `src/hooks/useImageAI.ts` — 인페인팅 알고리즘 교체, 브러시 마스크 로직 추가
- `src/components/image-editor/AIPanel.tsx` — 브러시 크기 슬라이더, 모드 전환 UI 추가

## 검증 시나리오
1. WM삭제 → 브러시 모드 선택 → 크기 슬라이더 조절 → 워터마크 영역 칠하기 → 인페인팅 적용 → 워터마크 자연스럽게 제거됨
2. 사각형 모드로도 동작 확인
3. 브러시 크기 최소(5px) ~ 최대(100px) 조절 정상
4. 인페인팅 적용 후 Undo(Ctrl+Z) 동작 확인
5. 인페인팅 진행률 표시 확인
6. npm run build 성공
7. 기존 이미지 편집기 다른 기능에 영향 없음