# 02-사진분류기 (배포용 안내)

`02-사진분류기`의 배포용(Release) 안내입니다. 이 배포용은 기존 개발용 기능을 유지하되, 실행 시 사용자가 분류할 폴더를 직접 선택하여 즉시 분석하도록 동작합니다.

**Version 1.0 Release (STABLE)** — Release Baseline 생성: 2026-07-03

## 요약(핵심 변경)
- 배포용에서는 고정된 `source/`와 `output/` 폴더를 사용하지 않습니다.
- 프로그램 실행 시 폴더 선택 창이 열리며, 사용자가 선택한 폴더를 즉시 분석합니다.
- 결과 폴더는 선택한 폴더 옆에 생성되며, 내부에 `logs` 폴더가 생성됩니다.
- 원본 파일은 절대 수정하지 않으며, 복사는 `shutil.copy2`로 수행됩니다.
- 테스트는 사용자가 직접 수행합니다.

## 시작 안내 (배포용)

이 프로그램은 선택한 폴더 내의 사진/영상 파일을 날짜 기준으로 분류하여 복사합니다. 실행 시 다음 흐름을 따릅니다.

1. 프로그램 실행 → 안내 문구 출력
2. `폴더 선택` 대화상자 표시 (`tkinter.filedialog.askdirectory()`)
3. 사용자 선택 폴더를 즉시 분석
4. 결과 폴더 생성 및 파일 복사

### 선택할 폴더 예시
- `D:\사진`
- `D:\카카오톡사진`
- `C:\Users\사용자\Desktop\여행사진`

## 결과 폴더 규칙

- 결과 폴더명(확정): `{원본폴더명}_분류완료_{YYYYMMDD_HHMMSS}`
	- 예: `D:\사진_분류완료_20260703_143522`
- 생성 위치: 사용자가 선택한 폴더의 부모 디렉터리(선택 폴더 옆)

예시:

선택 폴더:
`D:\사진`

결과 폴더:
`D:\사진_분류완료_20260703_143522`

## logs 위치

- 모든 로그 파일(`.log`) 및 작업 요약은 결과 폴더 내부의 `logs` 폴더에 저장됩니다.
	- 예: `D:\사진_분류완료_20260703_143522\logs\2026-07-03.log`

## 원본 안전성

- 원본 파일은 절대 수정하지 않습니다. 모든 파일은 복사(`shutil.copy2`)로 결과 폴더에 보관됩니다.

## 실행 방법

명령 프롬프트에서 프로젝트 루트로 이동 후 실행:

```bat
python src/main.py
```

또는 `run.bat`을 사용합니다.

실행 시 GUI 환경이 없거나 `tkinter`가 실패하면 CLI로 폴더 경로를 입력하도록 안내합니다.

## 테스트 안내

테스트는 사용자가 직접 수행합니다. 권장 테스트 절차:

1. 실제 사진/영상이 있는 폴더(예: `D:\사진`)를 준비합니다.
2. `python src/main.py` 실행 후 폴더 선택.
3. 콘솔의 진행 메시지 확인.
4. 처리 완료 후 결과 폴더(`{원본명}_분류완료_{타임스탬프}`)와 내부 `logs` 폴더 확인.
5. 원본 폴더의 파일이 변경되지 않았는지 확인.

## 참고
- 핵심 분류 로직과 유틸리티는 `src/classifier.py` 및 `src/utils.py`에 유지되어 있으며, 배포용은 `src/main.py`의 실행 흐름만 변경됩니다.

추가로 README에 예시 스크린샷이나 패키징(배포용 EXE) 관련 안내를 추가하길 원하시면 알려주세요.

## EXE 빌드(초안)

배포용 EXE를 Windows에서 생성하는 방법(초안)입니다. 이 스크립트는 `--onedir` 방식으로 빌드하여 `dist/<APP_NAME>/` 폴더에 실행 파일을 생성합니다.

빌드 스크립트: `build_exe.bat` (프로젝트 루트)

빌드 전 요구사항:
- `Python`이 설치되어 있어야 합니다.
- `PyInstaller`가 필요합니다. 설치되어 있지 않으면 아래 명령으로 설치하세요:

```bat
python -m pip install --upgrade pyinstaller
```

빌드 방법(스크립트 실행, 아직 빌드는 이 저장소에서 수행하지 않습니다):

```bat
build_exe.bat
```

빌드 출력 위치(초안 규칙):
- `dist/<APP_NAME>/` — 실행 파일(`사진분류기.exe`)이 이 폴더에 생성됩니다.
- `build/` — PyInstaller 빌드 임시 폴더
- `<APP_NAME>.spec` — 생성된 스펙 파일(프로젝트 루트)

빌드시 유의사항:
- 현재 스크립트는 `--onedir` 모드로 콘솔을 유지한 채 빌드합니다(진행 메시지/오류 확인 가능).
- 아이콘(`.ico`)이나 추가 데이터가 필요하면 `build_exe.bat`에 `--icon` 또는 `--add-data` 옵션을 추가해야 합니다.

빌드 후 확인 테스트:
1. `dist/사진분류기/사진분류기.exe`를 실행하여 안내문과 폴더 선택창이 정상 동작하는지 확인합니다.
2. 폴더 선택 → 처리 → 결과 폴더(`{원본명}_분류완료_{타임스탬프}`) 생성 여부 확인.
3. 결과 폴더 내부의 `logs` 폴더와 분류된 하위 폴더 존재 확인.
4. 원본 파일이 수정되지 않았는지 확인.

참고: `--onedir`로 먼저 빌드하여 동작을 확인한 뒤, 필요하다면 `--onefile` 빌드로 변경하는 것을 권장합니다.
