Files
photoai/docs/DECISIONS.md
T
koriweb 6dce580846 Add video sorting, reference thumbnails, theme/i18n, menu, DnD/paste, presets
Feature work on top of the initial organizer:

- Videos: .mp4/.mov/.avi/.mkv/.webm/.m4v sorted into output/Movie/YYYY/MM
- Profiles: reference-image thumbnail cards via a secure photoai-media:// protocol
  (serves only registered reference images); per-thumbnail delete; add via
  click, drag & drop, or paste (Ctrl+V) using webUtils.getPathForFile + a
  byte-based addReferenceData path for clipboard images
- Presets: local person library (max 5) saved to userData; one-click apply into
  active profiles; reusing stored descriptors (no recompute)
- Theme: dark/light with dark default (Tailwind class strategy)
- i18n: ko/en table-based localization; first-run onboarding to pick
  language + theme; English-neutral "Unsorted" folder (was [미정])
- App menu: File/Edit/View/Window/Help, localized; Help opens a detailed,
  theme-aware user guide window
- UI: History block scrolls internally (no whole-window scroll);
  threshold/concurrency tooltips; generic example name
- Settings persisted to userData/settings.json; menu + renderer kept in sync
- Docs: NextGen Photo AI feasibility review + Phase 0/1 roadmap

All typecheck/tests (12) /build green; boot smoke verified.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 15:40:44 +09:00

3.1 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 명세 "첫 번째 프로필 기준 이동 후 복사"와 일치.

1-1. 영상 파일 처리 (2026-06-01 추가)

항목 결정
대상 확장자 .mp4 .mov .avi .mkv .webm .m4v
처리 방식 얼굴인식 없이 날짜 기준으로 이동만
대상 폴더 출력 루트 하위 Movie/YYYY/MM/
날짜 기준 파일 수정일(mtime). 영상은 EXIF 미적용 → mtime 직행
재처리 방지 Movie 폴더는 스캔 제외 디렉터리에 포함
향후(비고) "영상에 누가 나오나"가 필요하면 ffmpeg 프레임 샘플링으로 인물 매칭(phase 2)

근거: 영상은 프레임이 많아 정지 이미지 엔진으로 바로 매칭 불가. v1은 날짜 기준 분리로 안전·신속 처리하고, 사진 정리 결과를 어지럽히지 않도록 전용 Movie 폴더로 격리.

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

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

3. 폴더 출력 구조

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

4. KPI / 비기능 요구

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

5. 범위 외 (Out of Scope)

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