# REQUIREMENTS.md

## 핵심 요구사항

| 번호 | 요구사항 | 우선순위 | 상세 |
|------|----------|----------|------|
| REQ-001 | source 폴더의 이미지를 자동 검색한다. | High | 하위 폴더까지 모두 검색 |
| REQ-002 | 지정한 크기로 비율을 유지하며 리사이즈한다. | High | 이미지 왜곡 없이 처리 |
| REQ-003 | 출력 폴더에 원본 폴더 구조를 유지하여 저장한다. | High | 하위 폴더 구조 동일 |
| REQ-004 | JPG, JPEG, PNG, WEBP 파일을 지원한다. | High | 기본 지원 포맷 |
| REQ-005 | EXIF 정보는 기본적으로 제거한다. | High | 용량 감소 및 개인정보 보호 |
| REQ-006 | 테스트 모드를 지원한다. | Medium | 지정한 개수만 처리 |
| REQ-007 | 처리 결과를 로그 파일로 저장한다. | Medium | 성공/실패 내역 기록 |
| REQ-008 | 오류가 발생한 파일은 건너뛰고 계속 진행한다. | High | 전체 작업 중단 방지 |
| REQ-009 | 진행 상황을 화면에 표시한다. | Medium | 처리 개수 및 진행률 표시 |
| REQ-010 | Windows EXE로 배포 가능해야 한다. | High | Python 미설치 환경 지원 |
| REQ-011 | 프로그램 시작 시 출력 화질 선택 메뉴를 표시한다. | Medium | 1-6번 프리셋 및 사용자 직접 입력 |
| REQ-012 | 선택한 화질에 따라 출력 폴더명과 파일명이 자동 변경된다. | Medium | 품질 구분이 쉬운 명명 규칙 |
| REQ-013 | config.json 기본값은 유지하고 실행 시 선택값이 우선 적용된다. | High | 기본 설정 변경 없이 실행별 화질 지정 |
| REQ-014 | 잘못된 입력 시 기본값(90)을 자동 적용하거나 다시 입력 요청한다. | Medium | 사용자 입력 오류 대응 |

---

## 기능 정의

### 핵심 기능

- source 폴더 자동 검색
- 하위 폴더 포함 이미지 검색
- 이미지 크기 자동 조정
- 비율 유지
- EXIF 제거
- 출력 폴더 저장
- 원본 폴더 구조 유지
- 테스트 모드
- 로그 생성
- 오류 파일 자동 건너뛰기

### 보조 기능

- 처리 시간 표시
- 처리 개수 통계
- 설정 파일(config.json) 지원
- 출력 폴더 자동 생성
- 지원하지 않는 파일 자동 제외

---

## 제약사항

- Windows 환경을 기본 대상으로 개발한다.
- Python 3.x 기반으로 개발한다.
- Pillow 라이브러리를 기본으로 사용한다.
- 원본 파일은 절대 수정하지 않는다.
- 대량(수천 장) 이미지도 안정적으로 처리해야 한다.
- 홈페이지 업로드용으로 용량 최적화를 우선한다.

---

## 사용자 요구사항

- 사용법이 매우 단순해야 한다.
- run.bat 실행만으로 사용할 수 있어야 한다.
- source 폴더에 이미지만 넣으면 자동 처리되어야 한다.
- 출력 폴더에서 결과를 바로 확인할 수 있어야 한다.
- 오류가 발생해도 나머지 이미지는 계속 처리되어야 한다.
- 최대한 작은 용량과 좋은 화질을 유지해야 한다.

---

## 성공 기준

- 1,000장 이상의 이미지를 정상 처리한다.
- 이미지 비율이 유지된다.
- 홈페이지에서 사용할 수준의 화질을 유지한다.
- 원본 대비 용량이 크게 감소한다.
- 폴더 구조가 유지된다.
- 오류 발생 시 프로그램이 중단되지 않는다.
- EXE 단독 실행이 가능하다.

---

## 상태

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