# PROJECT_CONTEXT.md

## 프로젝트 개요

| 항목 | 값 |
|---|---|
| 프로젝트명 | 02-사진분류기 |
| 버전 | 1.0.0 |
| 작성일 | 2026-07-03 |
| 상태 | COMPLETED |

## 목표

`02-사진분류기`는 기존 사진 분류기 Python 코드를 참고하여 AI-WORKS 표준 구조 내에서 순수한 사진 및 영상 분류 프로그램으로 재정리하는 프로젝트입니다.

- 입력은 `source/` 또는 사용자가 지정한 입력 폴더에서 수행합니다.
- 출력은 `output/`에 실행별 새 결과 폴더를 생성하여 저장합니다.
- 원본 파일과 폴더는 절대 수정하지 않습니다.
- 복사 기반 처리만 수행하며, 로고 삽입, 파일명 변경, 후처리 호출, 다른 프로그램 연동 기능은 제거합니다.
- 사용자가 직접 실행 및 테스트합니다.

## 표준 프로젝트 구조

```
{PROJECT_NUMBER}-{PROJECT_NAME}/
├── source/       # 원본 파일 입력 디렉터리
├── output/       # 정리된 파일 출력 디렉터리
├── backup/       # 변경 전 파일 백업 디렉터리
├── logs/         # 실행 로그 디렉터리
├── src/          # 소스 코드 디렉터리
├── config.json   # 프로젝트 설정
├── PROJECT_CONTEXT.md
├── RULES.md
├── STATE.json
├── TODO.md
├── CHANGELOG.md
├── README.md
└── run.bat       # 실행 스크립트
```

## 핵심 요구사항

- `source/` 또는 지정 입력 폴더에서 사진과 영상 파일을 수집합니다.
- `output/` 내에 실행별 새 결과 폴더를 생성합니다.
- 원본 파일/폴더를 변경하지 않고 `shutil.copy2()` 기반으로 복사 처리합니다.
- 날짜 기반 분류 로직을 적용하며, 날짜 정보가 없거나 지원하지 않는 파일은 `기타파일` 폴더로 이동합니다.
- 외부 연동, 로고 삽입, 파일명 변경, 후처리 호출 기능을 포함하지 않습니다.
- Windows EXE 배포가 가능한 구조로 설계합니다.

## 템플릿 폴더 구조

```
templates/
├── default/           # 기본 템플릿
│   ├── source/        # 빈 디렉터리
│   ├── output/        # 빈 디렉터리
│   ├── backup/        # 빈 디렉터리
│   ├── logs/          # 빈 디렉터리
│   ├── src/           # 빈 디렉터리
│   ├── config.json.template
│   ├── PROJECT_CONTEXT.md.template
│   ├── RULES.md.template
│   ├── STATE.json.template
│   ├── TODO.md.template
│   ├── CHANGELOG.md.template
│   ├── README.md.template
│   ├── SESSION.md.template
│   ├── IDEA.md.template
│   ├── build_exe.bat.template
│   └── run.bat.template
```

## 아키텍처 방향

- CLI 기반 Python 프로그램으로 설계합니다.
- `src/` 내부에 `main.py`, `classifier.py`, `config.py`, `utils.py` 구조를 검토합니다.
- `config.json`에서 입력/출력 경로, 확장자 목록, 하위 폴더 포함 여부를 관리합니다.
- `logs/`에 실행 로그를 기록하고, `output/`에 결과 폴더를 생성합니다.
- 기존 `D:\AI-TOOLS\01-사진분류\photo_classifier.py`의 날짜 추출, 중복 파일명 처리, 복사 기반 분류 로직을 참고합니다.

## 의사결정 로그

| 날짜 | 결정 내용 | 근거 |
|---|---|---|
| {CREATED_DATE} | 프로젝트 생성 | 템플릿에서 자동 생성 |

## 다음 단계

- `TODO.md`에 현재 작업 단계를 정리합니다.
- `STATE.json`에 현재 설계 상태와 다음 작업을 반영합니다.
- 문서 반영 완료 후 `src/` 코드 구조 작성 및 구현 준비를 진행합니다.