# IMPLEMENTATION_PLAN.md

## 개요

PhotoResizer v1.1을 단계적으로 개발한다.

v1.0 baseline을 기반으로 사용 편의성을 개선한다.
원본 이미지는 절대 수정하지 않으며,
사용자가 지정한 입력 폴더의 이미지를
WebP 형식으로 변환하여 새로운 출력 폴더에 저장한다.

---

## 구현 단계

### Step 1

- 작업:
  - 프로젝트 기본 환경 구성
  - config.json 작성
  - 기본 실행 확인

- 산출물:
  - config.json
  - run.bat

- 완료 기준:
  - 프로그램이 정상 실행된다.

---

### Step 2

- 작업:
  - 입력 폴더 확인
  - 하위 폴더 검색
  - 지원 이미지 검색

- 산출물:
  - 이미지 목록

- 완료 기준:
  - 모든 지원 이미지를 정상 검색한다.

---

### Step 3

- 작업:
  - 출력 폴더 생성
  - 출력 폴더명(_webp_q품질) 생성
  - 하위 폴더 생성

- 산출물:
  - 출력 디렉터리 구조

- 완료 기준:
  - 입력 폴더와 동일한 구조가 생성된다.

---

### Step 4

- 작업:
  - 이미지 읽기
  - 리사이즈
  - WebP 변환
  - EXIF 제거

- 산출물:
  - WebP 이미지

- 완료 기준:
  - 이미지가 정상적으로 WebP로 변환된다.

---

### Step 5

- 작업:
  - 파일명 생성 (_webp_q품질.webp)
  - 저장
  - 오류 처리

- 산출물:
  - 결과 이미지

- 완료 기준:
  - 모든 파일이 WebP로 저장된다.

---

### Step 6

- 작업:
  - 실행 로그 저장
  - 성공/실패 통계
  - 처리 시간 기록

- 산출물:
  - 로그 파일

- 완료 기준:
  - 로그가 정상 생성된다.

---

### Step 7

- 작업:
  - 기능 테스트
  - 대량 이미지 테스트
  - EXE 제작
  - 최종 검증

- 산출물:
  - PhotoResizer v1.0

- 완료 기준:
  - 정상 배포 가능 상태

---

## 테스트 계획

- 소량 이미지 테스트
- 대량 이미지 테스트
- 다양한 이미지 형식 테스트
- 하위 폴더 테스트
- 손상된 이미지 테스트
- 출력 폴더 생성 테스트
- 파일명 생성 테스트 (WebP 확장자 확인)
- 로그 생성 테스트
- EXE 실행 테스트

---

## 위험 요소

| 위험 | 영향 | 대응 |
|------|------|------|
| 손상된 이미지 | 처리 중 오류 | 해당 파일만 건너뛰고 로그 기록 |
| 메모리 부족 | 프로그램 속도 저하 | 한 장씩 처리 |
| 지원하지 않는 이미지 | 처리 실패 | 자동 제외 후 로그 기록 |
| 기존 출력 폴더 존재 | 결과 덮어쓰기 가능 | 실행 전 사용자 확인 |

---

## 상태

| 항목 | 값 |
|---|---|
| 작성일 | 2026-07-07 |
| 상태 | Approved |
| 검증 결과 | PASS |
| 버전 | 1.1 |