Files
photoai/docs/PRD.md
T
koriweb 8a8c10248c Initial commit: AI Photo Organizer (Electron + face-api)
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>
2026-06-01 13:36:40 +09:00

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 참조.