8a8c10248c
Local-first photo organizer that auto-sorts images by face recognition and EXIF capture date. - Electron app with 3-process split: Main (Node) / UI Renderer (React) / hidden Inference Renderer (face-api + WebGL) - Core pipeline: scan -> face match + EXIF -> path build -> atomic move/copy - Move = copy -> verify -> delete; auto-rename on filename collision - 1st-registered profile = move, others = copy; unmatched -> [미정]/YYYY/MM - EXIF date with mtime fallback - Vitest unit tests (pathBuilder / fileOps / concurrency) all green - electron-builder config for Windows (nsis) + macOS (dmg) - Docs: PRD / DECISIONS / ARCHITECTURE Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.1 KiB
3.1 KiB
[PRD] AI Photo Organizer (가칭)
상태: 확정(Final) · 대상: 개발/디자인/QA (원문 보관 — 일부 오타는 정리, 내용은 원안 유지)
1. 배경
사용자는 스마트폰·DSLR·클라우드 등 다양한 경로로 방대한 사진을 보유한다. 날짜·인물 정보가 파편화되어 특정 인물의 추억을 모으거나 연도별 정리에 막대한 수동 작업이 필요하다. 본 프로젝트는 얼굴 인식과 메타데이터 추출을 결합해 사용자 개입을 최소화한 자동 정리 환경을 구축한다.
2. 목표
- Local-first Automation: 클라우드 업로드 없이 로컬 PC 내에서 보안 유지하며 자동 분류.
- Intelligent Archiving: 인물(Profile) + 시간(EXIF)을 결합한 폴더 구조 생성.
- Zero-Effort Management: 사용자는 '정리할 폴더'와 '대상 인물'만 지정.
3. 핵심 사용자 시나리오
- S01 — 특정 인물 자동 분류: 'seunghyun' 프로필 등록 후 폴더 지정 → 해당 얼굴 포함 사진만 찾아
/seunghyun/YYYY/MM/로 이동(Move). - S02 — 다중 프로필 / 복사 로직: 'yejin'·'seunghyun' 등록. 두 인물 모두 포함된 사진은 첫 프로필(seunghyun)로 이동, 두 번째(yejin)로 복사(Copy). 원칙: 첫 번째 프로필 기준 이동 후 나머지는 복사.
- S03 — 미검출 예외 처리: 등록 인물이 없거나 인식 실패 사진은 삭제하지 않고
[미정]/YYYY/MM/로 이동.
4. 주요 기능
| 구분 | 기능 | 설명 |
|---|---|---|
| 인물 관리 | 프로필 등록/수정 | 최대 3명 이름 + 얼굴 참조사진 등록 |
| AI 엔진 | Face Recognition | face-api.js로 사진 인물 ↔ 프로필 유사도 측정 |
| 파일 관리 | Metadata Extraction | EXIF로 촬영 년/월 추출 |
| 자동 정리 | Path Auto-Generation | /프로필/YYYY/MM/ 또는 [미정]/YYYY/MM/ 생성 및 이동/복사 |
| UI | 작업 현황 모니터링 | 실시간 진행률 + 처리 파일 목록 |
| 리포팅 | 결과 리포트 | 총 처리 수, 성공/실패, 소요시간 로그 |
5. 비기능 요구사항
5.1 데이터 안전성·무결성
- Atomic Operation: 이동 중 오류 시 원본 무손상 예외 처리.
- No Data Loss: 동일 파일명 존재 시 덮어쓰기 전 백업/스킵 정책 정의.
5.2 성능·확장성
- Asynchronous Processing: 대량 스캔 시 UI 프리징 방지 위해 모든 파일 I/O 비동기.
- Memory Management: 고해상도 분석 시 누수 방지 위해 모델 로드/해제 최적화.
5.3 확장성
- Extension Auto-detection:
.jpg/.png/.webp등 주요 확장자 자동 감지.
6. KPI
- 분류 정확도 ≥ 98%
- 데이터 무결성 0 Error
- 작업 처리 효율성: 전체 스캔~완료 시간 측정
7. 미래/비목표
- 비목표: 클라우드(Google Photos 등) 실시간 동기화는 범위 외.
- 미래확장: 모바일/태블릿 확장 대비 descriptor 표준 저장 구조 설계.
개발 단계 확정 결정은 DECISIONS.md, 설계는 ARCHITECTURE.md 참조.