Files
photoai/docs/DECISIONS.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

2.3 KiB

AI Photo Organizer — 확정 결정 사항 (Decisions Log)

PRD([PRD.md] 별도 보관) 기반. 본 문서는 개발 착수 전 확정된 의사결정을 기록한다. 최종 갱신: 2026-06-01

1. 핵심 결정 (사용자 확정)

# 항목 결정 근거
1 앱 형태 Electron 데스크톱 앱 face-api.js를 렌더러(브라우저 환경)에서 네이티브 실행 → 빌드 안정. PRD의 실시간 진행률/파일목록 UI 요구 충족. Windows/Mac 크로스플랫폼.
2 중복 파일명 정책 자동 리네임 (photo.jpgphoto_1.jpg) No Data Loss 원칙. 데이터 유실 0.
3 EXIF 촬영날짜 누락 시 파일 수정일(mtime)로 대체하여 YYYY/MM 추출 대부분의 사진을 연/월 구조에 편입 가능.
4 다중 인물 사진의 Move 1순위 프로필 등록 순서 (1번 인물=이동, 2·3번=복사) PRD 명세 "첫 번째 프로필 기준 이동 후 복사"와 일치.

2. 기본 가정 (Claude 기본값, 이의 없으면 채택)

  • 이동(Move) 구현 방식: 복사 → 무결성 검증 → 원본 삭제 순서로 수행 (Atomic 보장, 데이터 무결성 0 Error).
  • 유사도 임계값: face-api Euclidean distance < 0.5를 매칭으로 간주 (튜닝 가능 파라미터로 노출).
  • Reference 등록: 인물당 다수 사진 등록 허용 → 평균 descriptor 사용으로 정확도 향상 (KPI ≥98% 대응).
  • 미검출/인식 실패 처리: [미정]/YYYY/MM/ 으로 이동 (삭제 금지, Scenario 03).
  • 대상 확장자: .jpg .jpeg .png .webp 자동 감지. (.heic는 향후 확장 검토.)
  • 프로필 최대 인원: 3명 (PRD 명세).

3. 폴더 출력 구조

<출력루트>/
  <프로필명>/YYYY/MM/...      # 인물 매칭 사진
  [미정]/YYYY/MM/...          # 미검출·인식실패 사진

4. KPI / 비기능 요구

  • 분류 정확도 ≥ 98%
  • 데이터 무결성 0 Error (유실·경로오류 0건)
  • 모든 파일 I/O 비동기 처리 (UI 프리징 방지)
  • face-api.js 모델 로드/해제 최적화 (메모리 누수 방지)

5. 범위 외 (Out of Scope)

  • 클라우드(Google Photos 등) 실시간 동기화
  • (미래) 모바일/태블릿 확장 — descriptor 표준 저장 구조는 설계 시 고려